再一次,在回答另一个问题时,我忘记了(我的错),只有在找到整数或浮动文字时才会从声明集中选取文字运算符模板。
举个例子:
template <char... C>
constexpr int operator "" _x() {
return 0;
}
它可以用作10_x
,但它既不能用作foo_x
也不能用作&#34; foo&#34; _x。
除了明显的原因 because the standard says that 之外,处理字符串文字时不考虑它们的技术原因(如果有的话)是什么?
我发现了proposal(好吧,不完全一样,但是它提出了一个想法),但仍然不是一个选择。
什么阻止他们用于字符串?
答案 0 :(得分:7)
有哪些并发症涉及字符集和编码等混乱。如果字符集编码在运行时和编译时间之间有所不同会发生什么,如果有多种方法对同一个字符进行编码会发生什么情况,字符串是utf-8编码还是不同编码做什么?您是否转换为运行时字符集?
也许有简单的答案;但是有足够的复杂性,提议者去了#34;好吧,我们会削减这个&#34;并且文字符合标准。
浮点数和整数文字所允许的字符数量有限,并且没有这个问题。
但您链接到与N2750关联的文档,并直接声明:
可能需要一个&#34; raw&#34;字符串文字的形式,其中
"Hello, " L"Worl\u0044!"
可与
区分开来L"Hello, World!"
但这与翻译阶段相互影响很严重 此功能没有令人信服的用例。