Существовал важный конструктивный компромисс в отношении конструкторов: Мы могли бы реализовать массив как «совокупность» (см. Раздел 8.5.1, [dcl.init.aggr], стандарта C++). Это будет означать:
Массив может быть инициализирован с помощью закрывающего скобки, разделенного запятой списка инициализаторов для элементов контейнера, написанного в увеличивающемся подстрочном порядке:
Усиление:
a = { { 1, 2, 3 } };
Обратите внимание, что если в списке инициализаторов меньше элементов, то каждый оставшийся элемент инициализируется по умолчанию (таким образом, он имеет определенное значение).
Однако у этого подхода есть свои недостатки:отсутствие списка инициализаторов означает, что элементы имеют неопределенное начальное значение, поскольку правило гласит, что агрегаты могут иметь:
- Никаких пользовательских конструкторов.
- Никаких частных или защищенных нестатических данных.
- Нет базовых классов.
- Нет виртуальных функций.
Тем не менее, Нынешняя реализация использует этот подход.
Обратите внимание, что для компиляторов, соответствующих стандарту, можно использовать меньше брекетов (согласно 8.5.1 (11) стандарта). То есть, вы можете инициализировать массив следующим образом:
boost::array
<int,4> a = { 1, 2, 3 };
Буду признателен за любую конструктивную обратную связь.Пожалуйста, обратите внимание: у меня нет времени читать все рекламные сообщения. Таким образом, чтобы убедиться, что обратная связь поступает ко мне, пожалуйста, отправьте мне копию каждого письма относительно этого класса.
Код предоставляется «как есть» без выраженной или подразумеваемой гарантии.