文字运算符模板:为什么不用字符串?

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也不能用.

除了明显的原因是因为标准说明了,在处理字符串文字时,他们不被考虑的技术原因(如果有的话)是什么?

我也找到了一个建议(好吧,不完全相同,但它提出了一个想法),但仍然不是一个选择.
什么阻止他们用于字符串?

Yak*_*ont 7

那里的并发症涉及字符集和编码和其他这样的混乱.如果字符集编码在运行时和编译时间之间有所不同会发生什么,如果有多种方法对同一个字符进行编码会发生什么情况,字符串是utf-8编码还是不同编码做什么?您是否转换为运行时字符集?

也许有简单的答案; 但是有足够的复杂性,提议者"好吧,我们会削减这个",文字进入标准.

浮点数和积分文字允许的字符数量有限,并没有这个问题.

但是您链接到与N2750相关联的文档,并直接声明:

可能需要一种"原始"形式的字符串文字,其中

"Hello, " L"Worl\u0044!"
Run Code Online (Sandbox Code Playgroud)

与...有区别

L"Hello, World!"
Run Code Online (Sandbox Code Playgroud)

但是这与翻译阶段的处理非常相似,并且没有引人注目的用例.