Главная » C++ » Почему этот код шаблона работает в VS2010, а не в VS2012?
Почему этот код шаблона работает в 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 году. Что не так с этим кодом?