【发布时间】:2014-02-26 06:21:27
【问题描述】:
一个简单的问题:为什么 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 中?
【问题讨论】:
标签: c++ c++11 stdstring user-defined-literals c++14