У меня возникла проблема, после которой обновление Visual Studio 2017 до 15.5 привело к ошибкам во время компиляции для ранее работавшего приложения C ++.
В частности, он не смог правильно проанализировать определенные определения типов, как это было раньше, и конструкторы и аргументы методов, которые их использовали, создавали синтаксические ошибки во время компиляции.
Пример:
template <class T>
class Demo
{
public:
typedef Demo<T> DEMO;
public:
template <class T>
class NestedDemo { };
public:
typedef DEMO::NestedDemo<T> NESTED_DEMO;
private:
NESTED_DEMO _attribute;
public:
inline DEMO(NESTED_DEMO attribute)
: _attribute(attribute)
{ }
};
Где сообщение об ошибке будет: «синтаксическая ошибка: отсутствует») перед идентификатором «атрибут» с ошибкой компиляции: C2146.
Edit:
Исправлена опечатка в примере.
Edit:
Исправлена еще одна опечатка.
Edit:
Вот изображение примера, который не компилируется:
https://imgur.com/a/KO1m6fJ