不带下划线的用户定义文字
User-defined literals without underscore
根据 cppreference 可以使用
定义文字
CSomeClass operator ""s(const char* literal, size_t size);
现在看完这段我觉得应该也可以定义
CSomeClass operator ""r(const char* literal, size_t size);
(注意 r
ud 后缀而不是 s
)
重载 s
只会发出 clang 警告
warning: user-defined literal suffixes not starting with '_' are reserved [-Wuser-defined-literals]
我在用 -std=c++14
编译时无法真正理解。重载 r
得到
error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal]
warning: user-defined literal suffixes not starting with '_' are reserved; no literal will invoke this operator [-Wuser-defined-literals]
这对我来说似乎更不负责任。
为什么 clang 发出这些 warnings/errors 以及如何使 r
ud 后缀有效。
用户定义的字面量必须以下划线_开头:不以下划线开头的后缀为标准库提供的字面量运算符保留。
根据 cppreference 可以使用
定义文字CSomeClass operator ""s(const char* literal, size_t size);
现在看完这段我觉得应该也可以定义
CSomeClass operator ""r(const char* literal, size_t size);
(注意 r
ud 后缀而不是 s
)
重载 s
只会发出 clang 警告
warning: user-defined literal suffixes not starting with '_' are reserved [-Wuser-defined-literals]
我在用 -std=c++14
编译时无法真正理解。重载 r
得到
error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Wreserved-user-defined-literal]
warning: user-defined literal suffixes not starting with '_' are reserved; no literal will invoke this operator [-Wuser-defined-literals]
这对我来说似乎更不负责任。
为什么 clang 发出这些 warnings/errors 以及如何使 r
ud 后缀有效。
用户定义的字面量必须以下划线_开头:不以下划线开头的后缀为标准库提供的字面量运算符保留。