タイトル通り、=default
でハマったのでメモとして残しておきます。C++20です。
下記のコードは問題なくコンパイルできます。(「フィールドが未初期化である」旨の警告は出ます。)
struct Hoge {
int a;
double b;
Hoge(){}
Hoge(const int a, const double b):a(a), b(b){}
};
int main() {
Hoge hoge;
int c = hoge.a;
return 0;
}
しかし下記のコードはコンパイルできません。「初期化されていないローカル変数を使用している」旨のコンパイルエラーが発生します。
struct Hoge {
int a;
double b;
Hoge() = default;
Hoge(const int a, const double b):a(a), b(b){}
};
int main() {
Hoge hoge;
int c = hoge.a;//ここでコンパイルエラー発生。
return 0;
}