有没有办法用MSVS2015模拟编译时双倍常量?

rub*_*nvb 3 c++ visual-c++ constexpr c++11 visual-studio-2015

我知道MSVS2013(甚至是CTP)无法处理static constexpr double数据成员,正如这个问题所证实的那样.

现在,我希望MSVS2015 Preview能够让我至少使用这个简单的构造,但是,我得到了同样的错误.所以逻辑上的下一个问题是:有没有办法用MSVC2015定义编译时双精度常量?

例:

template<typename T>
struct my_constant
{
  static constexpr const T value = 42;
}
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

error C2864: 'my_constant<double>::value': a static data member with an in-class initializer must have non-volatile const integral type
Run Code Online (Sandbox Code Playgroud)

这是C++ 03 mumbo-jumbo.

Mik*_*our 5

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

static constexpr T value() {return 42;}
Run Code Online (Sandbox Code Playgroud)

那应该给你一个编译时常量.

免责声明:我从不使用此编译器,因此无法测试.