【发布时间】:2017-02-09 10:19:14
【问题描述】:
再一次,在回答另一个问题时,我忘记了(我的错)只有在找到整数或浮点文字时才会从声明集中提取文字运算符模板。
举个例子:
template <char... C>
constexpr int operator "" _x() {
return 0;
}
它可以用作10_x,但它既不能用作foo_x,也不能用作“foo”_x。
除了明显的原因 because the standard says that,还有什么技术原因(如果有的话)在处理字符串文字时没有考虑到它们?
我还为此找到了proposal(嗯,不完全相同,但它提供了一个想法),但这仍然不是一个选项。
是什么阻止它们用于字符串?
【问题讨论】:
-
你的意思是
"foo"_x? -
@SebastianRedl 好的,谢谢。
-
不管怎样,
foo_x是一个标识符,所以它永远不会调用 udl。 -
gcc 有 extension 允许
template <typename Char, Char...cs> RetType operator "" _suffix().
标签: c++ templates c++11 user-defined-literals