Clang 3.1和用户定义的文字

时间:2012-06-04 23:20:14

标签: c++ xcode4 c++11 clang

Clang 3.1声称支持用户定义的文字。我可以定义:

int operator"" _tryit(long double n) { return int(n); }

但是当我尝试使用它时,我收到一个错误:

int m = 5_tryit;
  

整数常量

上的后缀'_tryit'无效

1 个答案:

答案 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标志传递给编译器。)