Как работает std::initializer_list c++

Стало очень интересно как работает std:: initializer_list. Каким образом достигается то, что мы можем передать любое количество аргументов в его конструктор. Я посмотрел его реализацию, но в конструкторе всего лишь 2 параметра, а передать туда мы можем гораздо больше. Как тогда это работает, каким образом я могу сделать так-же?


Ответы (1 шт):

Автор решения: HolyBlackCat

Это волшебный класс.

Невозможно сделать другой такой же. Знание о том, как он работает, встроено в компилятор.

Как убедиться? Можно вот так:

auto x = {1, 2, 3};
static_assert(std::is_same_v<decltype(x), std::initializer_list<int>>);
→ Ссылка