Chyba kompilátoru C3535
Nelze zjistit typ "typ1" z "typ2"
Typ proměnné deklarované pomocí auto klíčové slovo nemůže být odvozen z inicializace výrazu typu.Například tato chyba nastane, pokud je vyhodnocen inicializační výraz void, který není typu.
Oprava této chyby
Zajištění typ inicializace výrazu není void.
Zajistěte, že prohlášení není ukazatel na základní typ.Další informace naleznete v tématu Základní typy (C++).
Zajistěte, aby v případě, že prohlášení je ukazatel na typ, inicializační výraz typ ukazatele.
Příklad
Následující příklad vrací C3535, protože inicializační výraz vyhodnocen jako void.
// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
auto x = f(); //C3535
return 0;
}
Následující příklad vrací C3535, protože příkaz deklaruje proměnnou x jako ukazatel na deduced typu, ale typ inicializátor výraz je dvojitá.V důsledku toho kompilátor nelze odvodit typ proměnné.
// C3535b.cpp
// Compile with /Zc:auto
int main()
{
auto* x = 123.0; // C3535
return 0;
}
Následující příklad vrací C3535, protože proměnná p ukazatel na deduced typ deklaruje, ale výraz inicializace není typ ukazatele.
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535