用户定义的文字运算符

时间:2015-08-31 20:18:15

标签: c++ namespaces operator-keyword using user-defined-literals

是否可以为文字运算符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函数,就像命名空间中任何其他函数或类型一样。

1 个答案:

答案 0 :(得分:6)

$scope.selectedMonth

DEMO

语法参考:

using MyNamespace::operator""_hr;
//                           ^^^