2016-04-15 103 views
0

此模板定义使用MSVC可以,但无法在GNU上编译。问题是什么? 编辑:我已用C++ 11选项(使用的mingw32)编译它常量全局变量的模板

#include <iostream> 
using namespace std; 

template <typename T> 
const static size_t ALIGN_MASK = 64/sizeof(T) - 1;  

int main() { 
    // your code goes here 
    cout << ALIGN_MASK<double>; 
    return 0; 
} 
+1

你用'-std = C++ 14'编译了吗? –

+0

[Works for me](http://coliru.stacked-crooked.com/a/3277f41804038b50)。 –

+0

我已经使用的mingw32和-std = C++ 11(在没有mingw的C++ 14) – Laci

回答

2

可变模板是一个C++ 14功能。编译-std=c++14以使用此版本的标准。

如果不工作,你将不得不升级你的编译器。如果这不是一个选项,请使用struct而不是static成员。

+0

谢谢您的帮助。我做了一个错误的假设,如果我在Visual Studio Community 2015上使用/ Qstd = C++ 11选项,我的代码将与任何C++ 11编译器兼容。 – Laci