Nav*_*vin 7 c++ visual-c++ constexpr c++11 visual-studio-2013
标题说明了所有这两种常用方法都不起作用.我错过了什么?
1.
class Cl {
static constexpr double PI;
};
constexpr double Cl::PI = 3.14;
Run Code Online (Sandbox Code Playgroud)
(26):错误C2737:'private:static double const Cl :: PI':'constexpr'对象必须初始化
2.
class Cl {
static constexpr double PI = 3.14;
};
Run Code Online (Sandbox Code Playgroud)
(26):错误C2864:'Cl :: PI':具有类内初始化程序的静态数据成员必须具有非易失性const整数类型
类型为'const double'
在两次尝试中,错误都在类中的同一行.我正在使用VisualStudio/MSVC 2013年11月CTP编译器.
请注意,使变量const不是解决方案,因为我想在constexpr函数和普通函数中使用此常量.
根据该博客中 Stephan TL的表格和解释,constexpr实际上仅在VS Nov 2013 CTP中部分实现。
CTP支持C ++ 11 constexpr,成员函数除外。(另一个限制是不支持数组。)而且,它不支持C ++ 14的扩展constexpr规则。
(希望将其放在评论中,但没有足够的要点)
编辑:只是要补充一下,在Herb的博客中,关于静态成员的问题几乎相同,但是答复与Stephan相同。
我认为可以简单地说,2013年11月CTP未实现所需的OP功能(发送错误报告?),然后等待2014年7月CTP或VS Next(可悲)。