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

На этот вопрос уже есть ответ здесь:

Почему в C ++ требуется пользовательский конструктор по умолчанию для конструирования объекта const по умолчанию? 5 ответов

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

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

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

#include

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; // 

Ответы на вопрос(1)

Ваш ответ на вопрос