【发布时间】:2015-08-31 20:18:15
【问题描述】:
是否可以为文字运算符operator "" 声明using?
例如,
#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 函数的方式与用于命名空间中的任何其他函数或类型的方式相同。
【问题讨论】:
-
using MyNamespace::operator""_hr; -
@PiotrSkotnicki 我的朋友,这是一个答案。 (甚至是正确答案!)
标签: c++ namespaces operator-keyword using user-defined-literals