一个简单的问题:为什么 C++11 不提供一个“用户”(实际上是标准库)定义的文字来创建一个std::string
,例如
auto str = "hello world"s; // str is a std::string
与 C++ 一样,Objective-C 支持 C 风格的字符串和更用户友好的库类型NSString
;然而,与 C++ 不同的是,没有人会混淆这两者,因为NSString
通过在字符串文字前加上@
. 事实上,很少看到没有@
前缀的Objective-C 代码。每个人都知道这是这样做的方法,使用NSString
并继续使用它。
C++11 用户定义的文字允许这样做,事实上,Stroustrup 的 C++11 FAQ 上的 UDL 部分正是使用了这个示例。此外,没有前导下划线的 UDL 是保留的,因此允许s
上面的纯文本没有问题——它不可能与其他任何内容发生冲突。
也许我遗漏了一些东西,但这似乎是对该语言非常有价值且无风险的补充,所以有人知道为什么 C++11 不提供它吗?它有可能出现在 C++14 中吗?