我想和constexpr
一起玩,有没有编译器支持呢?
答案 0 :(得分:10)
Apache Stdcxx项目有a nice table detailing which C++0x features are supported by which compilers。它已经定期更新,涵盖了大多数现代C ++编译器。
据此,只有GCC 4.5支持 constexpr
(请注意,该支持可能是实验性的。)
在该列表与评论中所说的内容之间,似乎答案是“不”。
答案 1 :(得分:4)
截至2011年7月,gcc 4.7支持constexpr。你需要从svn构建它。
答案 2 :(得分:-2)
同意,g ++ 4.5和4.6支持关键字,但忽略了含义。我刚刚使用以下行编译了一个简单的因子程序(在两个版本上使用-std = c ++ 0x):
constexpr fact(int i) { return (i>1) ? fact(i-1)*i : 1; }
并编译并运行但是在检查asm源(-S选项)时,它显示函数是使用参数调用的,而不是由编译器确定。
答案 3 :(得分:-9)
“constexpr”的使用非常简单。看看这段代码:
constexpr int get_five(){
return 5;}
此函数总是返回5,因此可以使用“constexpr”关键字声明它。 但是因子函数根据参数返回值,因此它的“输出”并不总是相同。