В почти каждом сообщении, которое я вижу на SO, с участием std::initializer_list
, люди склонны передавать значение std::initializer_list
по значению. Согласно этой статье:
http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/
нужно передать значение, если нужно сделать копию переданного объекта. Но копирование std::initializer_list
не является хорошей идеей, поскольку
Копирование
std::initializer_list
не копирует базовые объекты. Базовый массив не может существовать после жизни исходный объект списка инициализатора закончился.
Итак, почему экземпляр его часто передается по значению, а не, скажем, const&
, который гарантированно не делает ненужную копию?