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

Literal operator template: why not string?

再一次,在回答另一个问题时,我忘记了(我的错)仅当找到整数或浮点文字时才从声明集中选取文字运算符模板。

举个例子:

template <char... C>
constexpr int operator "" _x() {
    return 0;
}

可以用作10_x,但既不能用作foo_x,也不能用作"foo"_x.

除了明显的原因 because the standard says that,在处理字符串文字时不考虑它们的技术原因是什么(如果有的话)?

我也找到了一个 proposal 来解决这个问题(好吧,不完全一样,但它给出了一个想法),但这仍然不是一个选择。
是什么阻止它们用于字符串?

那里涉及字符集和编码等复杂问题。如果字符集编码在运行时和编译时不同,会发生什么情况,如果有多种方法对同一字符进行编码,会发生什么情况,使用 utf-8 编码的字符串与不同的编码有什么关系吗?是否转换为运行时字符集?

也许有简单的答案;但是有足够的复杂性以至于提议者说“好吧,我们会削减这个”并且文字进入了标准。

浮点数和整型文字允许的字符有限,没有这个问题。

但是您链接到一个链接到 N2750 的文档,并且直接声明:

there may be demand for a "raw" form of string literal, in which

"Hello, " L"Worl\u0044!"

is distinguishable from

L"Hello, World!"

but this interacted badly with phases of translation, and no compelling use cases for this feature were known.