是否可以using
为文字运算符声明operator ""
?
例如,
#include <chrono>
namespace MyNamespace
{
constexpr std::chrono::hours operator "" _hr(unsigned long long n){
return std::chrono::hours{n};
}
// ... other stuff in the namespace ...
}
using MyNamespace::operator""; // DOES NOT COMPILE!
int main()
{
auto foo = 37_hr;
}
我的解决方法是将这些运算符放在它们自己的嵌套命名空间中,称为literals
,它允许using namespace MyNamespace::literals;
,但这似乎有点不雅,我不明白为什么该using
指令不能以operator
与它相同的方式用于函数命名空间中的任何其他函数或类型。