Из комментариев к вопросу я могу заключить, что я не осознал две вещи:
const
ссылочные члены не совпадают с const
ссылочными не-членами, в этомони не увеличивают срок службы временных значений. - Члены класса могут быть инициализированы в конструкторе с помощью фигурных скобок (где это применимо, например, массивы).
Как дополнительное примечание,член std::array
, содержащий T&
, может вызвать следующее:
предупреждение: «Foo» имеет виртуальные функции, но не виртуальный деструктор
ошибка: формирование указателя на ссылочный тип 'std :: array :: value_type {aka const int &}'
В обоих случаяхЯ не совсем уверен, что происходит, но это будут отдельные вопросы.