sky*_*ack 7 c++ templates user-defined-literals c++11
再一次,在回答另一个问题时,我忘记了(我的错),只有在找到整数或浮点文字时才从声明集中选取文字运算符模板.
举个例子:
template <char... C>
constexpr int operator "" _x() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它可以用作10_x,但不能既不foo_x用作"foo"_x也不能用.
除了明显的原因是因为标准说明了,在处理字符串文字时,他们不被考虑的技术原因(如果有的话)是什么?
我也找到了一个建议(好吧,不完全相同,但它提出了一个想法),但仍然不是一个选择.
什么阻止他们用于字符串?
那里的并发症涉及字符集和编码和其他这样的混乱.如果字符集编码在运行时和编译时间之间有所不同会发生什么,如果有多种方法对同一个字符进行编码会发生什么情况,字符串是utf-8编码还是不同编码做什么?您是否转换为运行时字符集?
也许有简单的答案; 但是有足够的复杂性,提议者"好吧,我们会削减这个",文字进入标准.
浮点数和积分文字允许的字符数量有限,并没有这个问题.
但是您链接到与N2750相关联的文档,并直接声明:
可能需要一种"原始"形式的字符串文字,其中
Run Code Online (Sandbox Code Playgroud)"Hello, " L"Worl\u0044!"与...有区别
Run Code Online (Sandbox Code Playgroud)L"Hello, World!"但是这与翻译阶段的处理非常相似,并且没有引人注目的用例.