質問があります。
コンパイラはMicrosoft(R) C/C++ Optimizing Compiler Version 19.12.25830.2 for x86
class A {
public:
explicit A( void ) {}
};
struct B {
A a;
};
int
main( int, char ** )
{
B b;
B b2( {} );
B b3 = {};
B b4{};
return 0;
}
上記のソースをオプション/std:c++latestを付けるとエラー、つけないとエラー無しになります。
対処だけだったらAのコンストラクタからexplicitを取れば良いのですが、
何故エラーになるのかがイマイチ理解できていません。
C++17の波括弧初期化の型推論の新規則あたりがそれっぽいですがその辺を読んでも理解できていません。
(そもそも引数無しのコンストラクタにexplicitを何故付けるのかって突っ込まれそう)