Open apolukhin opened 3 years ago
Евгений Гагауз, 28 февраля 2019, 9:24 Забыл отметить, что пример выше вызывает ошибку компиляции.
amlet, 28 февраля 2019, 11:35 Нужно всего-то во всех стандартных контейнерах вместо:
constructor(std::initializer_list<T> list);
использовать (и реализовать)
constructor(const std::initializer_list<T> & list);
constructor(std::initializer_list<T> && list);
Это даже вроде ничего поломать не должно :)
Andrey Davydov, 28 февраля 2019, 12:58 Было бы здорово, если бы initializer_list изначально поддерживал move semantics, но поправить это задним числом вряд ли возможно. Есть такие идеи: https://wg21.link/n4166, https://wg21.tartanllama.xyz/initializer_list.
Перенос предложения: голоса +7, -0 Автор идеи: Евгений Гагауз
Легко продемонстрировать ограничение применимости класса std::initializer_list на простом примере инициализации вектора move-only объектов: