Почему этот код шаблона работает в VS2010, а не в VS2012?

Я унаследовал проект, в котором интенсивно использовалось мета-программирование шаблонов, и сейчас я нахожусь в процессе обновления с Visual Studio 2010 до 2012 года. Некоторые из кода шаблона больше не работают в 2012 году. Я составил минимальный пример:

template <typename T, int i>
class MyClass
{
private:
typedef typename T::Nested<i> Found;
};

Дает это сообщение об ошибке:

    source.cpp(5): error C2059: syntax error : '<'
source.cpp(6) : see reference to class template instantiation 'MyClass<T,i>' being compiled
source.cpp(5): error C2238: unexpected token(s) preceding ';'

Дальше вниз в MyClass, Я могу использовать T::Nested<i>это просто typedef это не работает.

Этот пример компилируется в 2010 году, но не в 2012 году. Что не так с этим кодом?

10

Решение

Каждая версия VS требует все более строгих требований template а также typename, Вы скучаете по templateи VS2012 имеет право жаловаться.

12

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

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

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