关于c ++:有没有办法用MSVS2015模拟编译时双精度常量?

Is there any way to emulate compile-time double constant with MSVS2015?

我知道MSVS2013(甚至CTP)无法处理static constexpr double数据成员,正如在这个问题中确认的那样。

现在,我希望MSVS2015预览版至少能让我使用这个简单的构造,但遗憾的是,我得到了同样的错误。那么,合乎逻辑的下一个问题是:有没有办法用MSVC2015定义编译时双常量?

例子:

1
2
3
4
5
template<typename T>
struct my_constant
{
  static constexpr const T value = 42;
}

这就产生了错误:

1
error C2864: 'my_constant<double>::value': a static data member with an in-class initializer must have non-volatile const integral type

这是C++ 03 MunBo巨无霸。


如果编译器接受constexpr成员函数

1
static constexpr T value() {return 42;}

那就给你一个简单的时间常数。

我从不使用这个编译器所以不能测试这个