Erro do Compilador C3535
não pode deduzir o tipo para o tipo “- 1 " do tipo “- 2 "
O tipo da variável declarada pela palavra-chave de auto não for possível deduzir do tipo da expressão de inicialização. Por exemplo, esse erro ocorre se a expressão de inicialização avalia a void, que não é um tipo.
Para corrigir este erro
Verifique se o tipo da expressão de inicialização não é void.
Verifique se a declaração não é um ponteiro para um tipo fundamental. Para obter mais informações, consulte Tipos fundamentais (C++).
Certifique-se de que se a declaração é um ponteiro para um tipo, a expressão de inicialização é um tipo de ponteiro.
Exemplo
O exemplo a seguir gerencie C3535 porque a expressão de inicialização avalia a void.
// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
auto x = f(); //C3535
return 0;
}
O exemplo a seguir gerencie C3535 porque a instrução a seguir declara x variável porque um ponteiro para um tipo deduzido, mas o tipo da expressão de inicializador é duplas. Em virtude disso, o compilador não puder deduzir o tipo da variável.
// C3535b.cpp
// Compile with /Zc:auto
int main()
{
auto* x = 123.0; // C3535
return 0;
}
O exemplo a seguir gerencie C3535 porque p variável declara um ponteiro para um tipo deduzido, mas a expressão de inicialização não é um tipo de ponteiro.
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535