現在のところ、ユーザー定義のリテラルは、限られた型のセットを入力パラメーターとして受け入れます (こちらを参照)。入力パラメーターとして任意の型を受け入れる計画はありますか?そうでない場合、それはなぜですか?
たとえば、std::chrono::duration を異なる形式 (秒、ミリ秒など) で取得できるようにしたい場合は、次のようにします。
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;
}