再次,在回答另一个问题时,我忘记了(我的错),仅当找到整数或浮点文字时,才会从声明集中选取文字运算符模板。
举个例子:
template <char... C>
constexpr int operator "" _x() {
return 0;
}
它可以用作10_x
,但它不能用作foo_x
也不作为“foo”_x。
除了显而易见的原因之外因为标准说 http://eel.is/c++draft/lex.ext,在处理字符串文字时不考虑它们的技术原因(如果有)是什么?
我还发现了一个proposal http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3599.html为此(嗯,不完全相同,但它提供了一个想法),但这仍然不是一个选择。
是什么阻止它们用于字符串?
其中涉及字符集和编码以及其他此类混乱的复杂情况。如果运行时和编译时的字符集编码不同,会发生什么情况,如果有多种方法对同一字符进行编码,会发生什么情况,UTF-8 编码的字符串与不同编码的字符串是否会产生任何作用?您是否转换为运行时字符集?
也许有简单的答案;但问题已经够复杂了,提案者们“好吧,我们会删掉这个”,文字就进入了标准。
浮点和整数文字允许的字符有限,并且不存在此问题。
但是您链接到的文档链接到N2750 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2750.pdf,并且直接指出:
可能需要“原始”形式的字符串文字,其中
"Hello, " L"Worl\u0044!"
可以区别于
L"Hello, World!"
但这与翻译阶段的相互作用很严重,并且
目前尚无该功能的令人信服的用例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)