Подтвердить что ты не робот

Объявленный пользователем конструктор по умолчанию + инициализаторы в классе!= Созданный пользователем конструктор?

Документация Clang четко объясняет, что

Если класс или структура не имеет пользовательского конструктора по умолчанию, С++ не позволяет вам по умолчанию построить экземпляр const, как это ([dcl.init], p9)

Обоснование заключается в том, что если объект const не правильно инициализирован, его нельзя изменить позже. Следующий код имеет только конструктор по умолчанию объявлен для Test, но все его члены имеют инициализаторы в классе,

#include<iostream>

class Test
{
public:
    Test() = default;
    void print() const { std::cout << i << "\n"; }
private:
    int i = 42;   // will propagate to the default constructor!
};

int main()
{
    Test const t; // <-- Clang chokes on the const keyword, g++ does not
    t.print();    // prints 42
}

поэтому обоснование для user- предоставления конструктора по умолчанию кажется мне лишним. И действительно, g++ 4.8.1 скомпилирует его без проблем (Online Example), хотя Clang <= 3.2 не делает.

Вопросы: почему комбинация полных inital-инициализаторов + объявленный пользователем конструктор по умолчанию недостаточно, чтобы по умолчанию построить объект const? Есть ли исправление для С++ 14 Standard?

UPDATE: может ли кто-нибудь попробовать Clang 3.3/3.4 посмотреть, исправлено ли это по сравнению с Clang 3.2?

4b9b3361