我想和constexpr
一起玩,任何编译器都支持它吗?任何编译器是否都支持constexpr?
回答
Apache Stdcxx项目有a nice table detailing which C++0x features are supported by which compilers。它已经定期更新,涵盖了大多数现代C++编译器。
据此,只有GCC 4.5支持constexpr
(请注意,支持可能是实验性的)。
在该列表和评论中所说的内容之间,似乎答案是“否”。
同意,g ++ 4.5和4.6支持该关键字,但忽略其含义。我刚刚编译(使用-std =的C++ 0x的两个版本)与线一个简单的阶乘程序:
constexpr fact(int i) { return (i>1) ? fact(i-1)*i : 1; }
,并编译和运行,但检查ASM源(-S选项),当它显示了函数是用参数调用的,而不是由编译器决定的。
答案没有显示你的测试程序是无用的。你的描述听起来像你误解了'constexpr'(并且你显示的函数定义是无效的C++,C++没有“隐式int”)。 – 2011-07-31 17:03:48
截至2011年7月,gcc 4.7支持constexpr。你需要从svn构建它。
“constexpr”的使用非常简单。看看这段代码:
constexpr int get_five(){
return 5;}
此函数总是返回5,所以它可以与“constexpr”关键字来声明。 但因子函数根据参数返回值,所以它的“输出”并不总是相同的。
'constexpr int factorial(int n){ return n == 0? 1:n *阶乘(n-1); '是完全有效的。 – 2012-03-21 19:14:13
- 1. GNU Java编译器是否支持JNA?
- 2. Clang ++是否支持libC++支持constexpr数学函数
- 3. MacRuby是否支持静态编译?
- 4. 如何检测编译器是否支持static_assert?
- 5. F#编译器是否支持与C#编译器相同的foreach优化
- 6. 是否有任何支持语言的文本编辑器/ IDE?
- 7. 编译器支持C11
- 8. Erlang编译器UTF32支持
- 9. Angular 2的前期编译器是否支持SASS样式表?
- 10. GCC编译器是否支持经典的C++?
- 11. 检查编译器是否支持boost库
- 12. Java JIT编译器是否牺牲性能来支持集合?
- 13. OCaml编译器是否支持真正的模块别名?
- 14. .net运行时编译器是否支持C#3.0?
- 15. VS2010是否支持'控制编译器生成的函数'?
- 16. Jmeter 2.11是否支持pdf编辑器
- 17. FlashPlayer是否支持ScreenVideo编解码器?
- 18. 所有的gcc编译器都支持@FILE标志吗?
- 19. 是否有任何支持编译ILASM文件的商业或开源IDE?
- 20. 是否有任何IoC框架不使用支持截取的JIT编译?
- 21. IE6是否支持任何HTML5元素?
- 22. 支持Windows编译
- 23. 是否有任何c编译器实现任何C1X功能?
- 24. 英特尔IPP是否支持任何支持OpenGL的GPU?
- 25. 任何支持python的webhosting服务是否也支持django?
- 26. 是否使用lambda函数/表达式支持constexpr?
- 27. 是否有任何支持图像编辑的Flex库?
- 28. 是否有任何支持硒的Downless浏览器支持下载功能
- 29. ios编译ffmpeg不支持ac3支持
- 30. Android NDK编译器是否支持内联汇编? (即asm或__asm关键字?)
[官方GCC支持表](http://gcc.gnu.org/projects/cxx0x.html)指出'constexpr'完全不受支持。我的代码用'constexpr'编译,但它似乎没有任何效果。我的第一个猜测是关键字被简单地忽略了? – fredoverflow 2010-06-16 14:58:45
@Fred:也许没人支持。不幸的是,我不经常使用gcc来了解它的C++ 0x支持。 – 2010-06-16 15:27:04
刚刚在g ++(GCC)4.6.0 20100605上测试 - 仍然无法创建由constexpr函数返回的大小数组。读取bugzilla,看起来GCC 4.5引入了语法,但不是(但)语义。 – Cubbi 2010-06-16 15:43:36