Объявление шаблона decltype с помощью g ++

Следующий код прекрасно работает с версией clang 3.6.0.
Но когда я использую его с g ++ 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
Я получаю ошибку:

//g++ -std=c++14 testgcc.cpp

#include <iostream>
using namespace std;

template<typename T>
constexpr auto doSomething(){
return 123;
}

template<typename T>
decltype(doSomething<T>()) result = doSomething<T>();

decltype(doSomething<int>()) result2 = result<int>;

int main(void){
cout<<result2<<endl;
}

Я получаю ошибку:

testgcc.cpp:12:28: error: template declaration of ‘decltype (doSomething<T>()) result’
decltype(doSomething<T>()) result = doSomething<T>();
^
testgcc.cpp:14:40: error: ‘result’ was not declared in this scope
decltype(doSomething<int>()) result2 = result<int>;
^
testgcc.cpp:14:47: error: expected primary-expression before ‘int’
decltype(doSomething<int>()) result2 = result<int>;

Есть ли способ получить код для компиляции с GCC? Благодарю. постскриптум Я явно не нуждаюсь в template <typename T> но это только для иллюстрации.

1

Решение

В соответствии с C ++ 1y / C ++ 14 Поддержка в GCC, шаблоны переменных не поддерживаются в g ++ 4.9.2.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]