Clang 3.1声称支持用户定义的文字。我可以定义:
int operator"" _tryit(long double n) { return int(n); }
但是当我尝试使用它时,我收到一个错误:
int m = 5_tryit;
整数常量
上的后缀'_tryit'
无效
答案 0 :(得分:7)
5
无法隐式转换为long double
。您需要将其更改为5.0
以使其成为一个long double或自己显式调用该函数以使隐式转换起作用:
int m = 5.0_tryit;
OR
int n = operator"" _tryit(5);
(使用clang version 3.1 (trunk) (llvm/trunk 155821)
进行了测试)
This SO question对规则有很好的解释。
(另外,正如abarnert提到的那样,确保在编译时将-std=c++11
标志传递给编译器。)