c++ - Clang 3.1 和用户定义的文字

标签 c++ xcode4 c++11 clang

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

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

但是当我尝试使用它时出现错误:

int m = 5_tryit;

Invalid suffix '_tryit' on integer constant

最佳答案

5 在您的情况下不能隐式转换为 long double。您需要将其更改为 5.0 以使其成为 long double 或自己显式调用该函数以使隐式转换起作用:

int m = 5.0_tryit;

int n = operator"" _tryit(5);

(均使用 clang 版本 3.1(trunk)(llvm/trunk 155821) 进行了测试

This SO question对规则有很好的解释。

(另外,正如 abarnert 提到的,确保在编译时将 -std=c++11 标志传递给编译器)。

关于c++ - Clang 3.1 和用户定义的文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10889697/

相关文章:

来自模板参数的 C++ 通用模板方法名称

multithreading - 如何比较和递增原子变量

c++ - 不同的别名模板能否解决跨库的潜在 ODR 违规问题?

c++ - pnacl-ld : Invalid archive member header magic string

xcode - Xcode问题导航器中未显示警告

iphone - 将 Target 从 iPhone- 更新到 Universal-App

sockets - Boost.Asio 的 async_read_some 会是整个消息吗?

c++ - 在 NS-2 中绑定(bind)变量时出错

c++ - 使用 libgit2 执行 Git Pull

iphone - 无法获取进程 1640 的任务。尝试在设备上运行 iPhone 应用程序时出错