Pap*_*ter 5 c++ string-literals user-defined-literals c++14
我很惊讶地发现该代码未编译(假设我们使用的是C ++ 14编译器):
std::cout << "hello world!\n"s;
Run Code Online (Sandbox Code Playgroud)
ideone显示的错误如下:
找不到字符串文字运算符“ operator””
幸运的是,使用以下using语句修复起来非常简单:
using namespace std::literals::string_literals;
std::cout << "hello world!\n"s; // Compiles!
Run Code Online (Sandbox Code Playgroud)
我想知道是否将标准字符串用户定义的文字放在不同于其std::string本身的名称空间中的原因是什么?我一直在思考,但我不知道原因。
无法与operator""sfrom 冲突,std::chrono因为它们使用不同的类型:
auto ten_seconds = 10s; // ten seconds
auto some_string = "some string"s; // some string
Run Code Online (Sandbox Code Playgroud)
我在想,在resason可能是不会发生冲突与我的用户定义的文字,但该标准说的是我必须用preceed他们'_'下划线:
警告:保留不带'_'的文字运算符后缀以供将来标准化
因此,我很惊讶,没有人知道将字符串文字运算符放入std::literals::string_literals?中的原因。
谢谢。