2016-04-15 5 views
0

Это определение шаблона в порядке, используя MSVC, но не может компилироваться в GNU. В чем проблема? EDIT: Я составил его с 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

[Работает для меня] (http://coliru.stacked-crooked.com/a/3277f41804038b50). –

+0

Я использовал mingw32 и -std = C++ 11 (нет C++ 14 в mingw) – Laci

ответ

2

Переменные шаблоны функция С ++ 14. Скомпилируйте с помощью -std=c++14, чтобы использовать эту версию стандарта.

Если это не сработает, вам придется обновить свой компилятор. Если это не вариант, используйте вместо этого struct с элементом static.

+0

Спасибо для вашей помощи. Я сделал неправильное предположение, что если я использую параметр/Qstd = C++ 11 в Visual Studio Community 2015, мой код будет совместим с любым компилятором C++ 11. – Laci

Смежные вопросы