コンパイラ エラー C3535
'type1' の型を 'type2' から推測できません
auto キーワードを使用して宣言された変数の型が、初期化子式の型から推測できません。 たとえば、このエラーは初期化子式が型ではない void を評価する場合に発生します。
このエラーを解決するには
初期化子式の型が void ではないことを確認します。
宣言が基本型に対するポインターでないことを確認します。 詳細については、「基本型 (C++)」を参照してください。
宣言が型に対するポインターの場合、初期化子式がポインター型であることを確認します。
使用例
次の例では、初期化子式が void を評価するため、C3535 が発生します。
// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
auto x = f(); //C3535
return 0;
}
次の例では、ステートメントが変数 x を推測される型へのポインターとして宣言していますが、初期化子式の型が double のため、C3535 が発生します。 その結果、コンパイラは変数のデータ型を推測できません。
// C3535b.cpp
// Compile with /Zc:auto
int main()
{
auto* x = 123.0; // C3535
return 0;
}
次の例では、変数 p が推測される型へのポインターを宣言していますが、初期化子式がポインター型でないため、C3535 が発生します。
// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x; // C3535