今のところ、ユーザ定義リテラルは、入力パラメータとして限定されたタイプのセットを受け入れます(here参照)。任意の型を入力パラメータとして受け入れる計画はありますか?なぜそうでないのですか?任意のタイプのC++ユーザ定義リテラル
は例えば、私は別の形式(秒、ミリ秒など)でのstd ::クロノ::期間を取得できるようにしたいかもしれません、そしてたぶん、あなたが作ることができ
constexpr double operator"" _s(std::chrono::nanosecond time)
{
return std::chrono::duration_cast<std::chrono::duration<double, std::chrono::seconds::period>>(time).count();
}
constexpr long operator"" _us(std::chrono::nanoseconds time)
{
return std::chrono::duration_cast<std::chrono::microseconds>(time).count();
}
// And so on ...
int main()
{
auto t0 = std::chrono::high_resolution_clock::now();
// do some stuff
auto t1 = std::chrono::high_resolution_clock::now();
std::cout << "Time in seconds : " << (t1 - t0)_s << "s\n";
std::cout << "Time in microseconds : " << (t1 - t0)_us << "µs\n";
return 0;
}
(T1 - T0)は'リテラル式ではありません。要するに、ユーザー定義のリテラルは、*リテラル*ではないため、他の引数はありません。 –
言葉遣いは間違っていますが、私はいくつかのタイプの "後置機能"を念頭に置いています。 – Zouch
@Zouch '(t1 -t0)_s'は' std :: chrono :: duration(t1 -t0) 'にどのような利点がありますか?単なる文字数であれば、 '使用する 'ことができるのです。 – Biffen