Ошибка компилятора C3535
Не удается вывести тип для типа "type1" из типа2
Тип переменной, объявленной auto
ключевым словом, не может быть выведен из типа выражения инициализации. Например, эта ошибка возникает, если выражение инициализации оценивается void
как тип.
Исправление ошибки
Убедитесь, что тип выражения инициализации не
void
является.Убедитесь, что объявление не является указателем на фундаментальный тип. Дополнительные сведения см. в разделе "Основные типы".
Убедитесь, что если объявление является указателем на тип, выражение инициализации является типом указателя.
Примеры
В следующем примере возвращается C3535, так как выражение инициализации оценивается void
.
// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
auto x = f(); //C3535
return 0;
}
В следующем примере возвращается C3535, так как оператор объявляет переменную x
как указатель на выводимый тип, но тип выражения инициализатора является двойным. Следовательно, компилятор не может вывести тип переменной.
// C3535b.cpp
// Compile with /Zc:auto
int main()
{
auto* x = 123.0; // C3535
return 0;
}
В следующем примере возвращается C3535, так как переменная p
объявляет указатель на выведенный тип, но выражение инициализации не является типом указателя.
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535