8

根据cppreference可以定义一个文字使用

CSomeClass operator ""s(const char* literal, size_t size);

现在阅读该段后,我认为应该也可以定义

CSomeClass operator ""r(const char* literal, size_t size);

(注意rud-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 会发出这些警告/错误以及如何使rud-suffix 有效。

4

1 回答 1

12

用户定义的文字必须以下划线 _ 开头:不以下划线开头的后缀是为标准库提供的文字运算符保留的。

于 2015-03-12T18:18:30.293 回答