根据cppreference可以定义一个文字使用
CSomeClass operator ""s(const char* literal, size_t size);
现在阅读该段后,我认为应该也可以定义
CSomeClass operator ""r(const char* literal, size_t size);
(注意r
ud-suffix 而不是s
)
重载s
只会发出铿锵警告
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 会发出这些警告/错误以及如何使r
ud-suffix 有效。