对C++ 11和14之间的价值初始化的区别感到困惑

Cu2*_*u2S 8 c++ c++11 c++14

我在http://en.cppreference.com/w/cpp/language/value_initialization中读到了关于值初始化的内容,但我对以下示例代码感到困惑:

struct A {
    int i;
    A() {} // user-provided ctor, does not initialize i
};

struct B { A a; }; // no user-provided ctor

std::cout << B().a.i << '\n'; // value-initializes a B temporary
                          // leaves b.a.i uninitialized in C++03
                          // sets b.a.i to zero in C++11
// (note that B{}.a.i leaves b.a.i uninitialized in C++14, but for 
//  a different reason: C++14's B{} is aggregate-initialization)
Run Code Online (Sandbox Code Playgroud)

cppreference说:

在所有情况下,如果使用空的大括号{}并且T是聚合类型that is not a class type with a default constructor (until C++14),则执行聚合初始化而不是值初始化.

我认为B{}应该在C++ 11中进行值初始化,因为B有一个默认的构造函数(因为A).根据关于值初始化的规则:

2)如果T是没有任何用户提供的构造函数的非联合类类型,则该对象被零初始化,然后调用隐式声明的默认构造函数(除非它是微不足道的)
(从C++ 11开始)(直到C++ 14)

所以我认为B {}应首先进行零初始化,然后调用默认构造函数.但不幸的是,我使用clang ++编译代码,-std = c ++ 11,其值B{}.a.i未初始化.有什么问题?