コンパイラ エラー C3446
'class': 値クラスのメンバーには、既定のメンバー初期化子を使用できません
Visual Studio 2015 以前では、コンパイラは、値クラスのメンバーの既定のメンバーの初期化子を許可しました (ただし無視しました)。 値クラスの既定の初期化子は、常にメンバーを 0 に初期化します。既定のコンストラクターは許可されません。 Visual Studio 2017 年では、この例に示すように、既定メンバー初期化子は、コンパイラ エラーを発生させます。
例
次の例では、Visual Studio 2017 以降で C3446 が生成されます。
// C3446.cpp
value struct V
{
int i = 0; // error C3446: 'V::i': a default member initializer
// is not allowed for a member of a value class
int j {0}; // C3446
};
エラーを修正するには、初期化子を削除します。
// C3446b.cpp
value struct V
{
int i;
int j;
};