Можно ли инициализировать ссылку на член const std :: array с помощью значения r? - PullRequest
0 голосов
/ 17 ноября 2018

Я пытался инициализировать ссылку на член класса const std::array списком инициализаторов:

class Foo {
    const std::array<const int&, 3> &bar;
    Foo() : bar({ 1, 2, 3 }) {}
}

Но очевидно

не может инициализировать ссылочный тип 'const std :: array &' списком инициализаторов в скобках

В: Есть ли способ инициализировать ссылочный элемент const std::array значением r?

1 Ответ

0 голосов
/ 17 ноября 2018

Из комментариев к вопросу я могу заключить, что я не осознал две вещи:

  • const ссылочные члены не совпадают с const ссылочными не-членами, в этомони не увеличивают срок службы временных значений.
  • Члены класса могут быть инициализированы в конструкторе с помощью фигурных скобок (где это применимо, например, массивы).

Как дополнительное примечание,член std::array, содержащий T&, может вызвать следующее:

  • предупреждение: «Foo» имеет виртуальные функции, но не виртуальный деструктор

  • ошибка: формирование указателя на ссылочный тип 'std :: array :: value_type {aka const int &}'

В обоих случаяхЯ не совсем уверен, что происходит, но это будут отдельные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...