编译器错误 C3535
无法从“type2”推断“type1”的类型
无法从初始化表达式的类型推断关键字 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