VS2015头文件因错误C2864而失败:'一个带有类内初始化程序的静态数据成员......'

时间:2018-01-15 10:53:30

标签: visual-c++ visual-studio-2015

我们有一个构建正常的Visual Studio 2010项目。我想将项目迁移到Visual Studio 2015.当我尝试使用VS2015(工具集14.0)构建项目时,项目的第三方源代码文件之一无法编译并出错:

1>C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\tuple(295): error C2864: 'std::tuple<_This,_Rest...>::_Mysize': a static data member with an in-class initializer must have non-volatile const integral type

失败的代码行是:

的最后一行
template<class _This,
    class... _Rest>
    class tuple<_This, _Rest...>
        : private tuple<_Rest...>
    {   // recursive tuple definition
public:
    typedef _This _This_type;
    typedef tuple<_This, _Rest...> _Myt;
    typedef tuple<_Rest...> _Mybase;
    static constexpr size_t _Mysize = 1 + sizeof...(_Rest);

我理解错误消息,但我不明白为什么会出现VS2015头文件。该文件肯定与VS2015代码生成兼容吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了原因,项目代码包括以下行:

#define constexpr /* nothing */

我禁用了该代码,然后编译了代码。