是否可以为文字运算符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;
,但这似乎有点不优雅,我不明白为什么{ {1}}指令不能用于using
函数,就像命名空间中任何其他函数或类型一样。