次のコードを検討してください。
class A
{
private:
struct B { private: int i; friend class A; };
public:
static void foo1()
{
B b;
b.i = 0;
}
static void foo2()
{
B b = {0};
}
};
foo1は機能するがfoo2は機能しないのはなぜですか?クラスAの構造体初期化コンストラクターは表示されませんか?これをC++11で機能させる方法はありますか?
(プライベートを削除すると、foo2が機能することに注意してください。)