有没有编译器支持constexpr?

时间:2010-06-16 14:25:38

标签: c++ c++11

我想和constexpr一起玩,有没有编译器支持呢?

4 个答案:

答案 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”关键字声明它。 但是因子函数根据参数返回值,因此它的“输出”并不总是相同。