Когда std :: initializer_list тривиально конструируем? - PullRequest
0 голосов
/ 04 июля 2018

По-моему, я думаю, что когда объекты типа Ts..., используемые для инициализации std::initializer_list<T>, можно использовать для тривиального построения T, тогда std::initializer_list<T> тривиально конструируем из Ts..., потому что согласно инициализация списка , каждый элемент std::initializer_list<T> равен либо direct_initialized, либо copy_initialized.

Однако я не уверен, прав ли я, поэтому я написал это.

1 Ответ

0 голосов
/ 04 июля 2018

Сам вопрос не имеет смысла. То есть вы спрашиваете о наличии свойства для операции, к которой свойство просто не относится.

Шесть специальных функций-членов (конструктор по умолчанию, конструктор копирования / перемещения / оператор присваивания и деструктор) могут быть тривиальными. Но это только вещи, которые могут быть тривиальными, для которых термин «тривиальный» имеет четко определенное значение.

Инициализация списка не делает ничего из этого. По крайней мере, не напрямую.

Процесс инициализации списка initializer_list включает создание временного массива, помещение в него значений из braced-init-list и создание initializer_list, который указывает на этот массив. Ни одна из них не является операцией, для которой тривиальность даже ставится под сомнение, поэтому спрашивать, являются ли они «тривиальными», не имеет смысла.

...