Как работает инициализация фигурных скобок? - PullRequest
0 голосов
/ 16 марта 2020

Прежде всего, я обнаружил, что термин «список инициализаторов» используется для двух, казалось бы, разных вещей: инициализация классов с помощью фигурных скобок, подобных этой Foo foo{1}, и написание конструкторов с использованием этого синтаксиса Foo::Foo(int test) : m_test(test). Эти двое связаны, или я просто все перепутал?

Теперь к моему актуальному вопросу. Я прочитал , что инициализация фигурной скобки не позволяет сужаться. Однако это не может быть единственной разницей.

struct Test {
    int one;
    int two;
};

int main() {
    Test test{1, 2};
}

Этот код работает, хотя Test::Test(int,int) объявлен нигде. Так что же делает инициализация фигурных скобок иначе, чем обычная инициализация? Это просто синтактика c сахар или есть более глубокие причины, почему он существует?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...