1 - Как я могу создать свой массив, как Boost :: массив делает? Что-то вроде
Array<int> ints = { 10, 12 };
В c ++ вы можете (в настоящее время) использовать список инициализаторов, заключенный в фигурные скобки, только если ваш массив struct, union или c-style соответствует критерию агрегирования. Для этого, согласно стандарту:
8.5.1.1 Агрегат - это массив или класс (раздел 9) без предоставленных пользователем конструкторов (12.1), без закрытых или защищенных нестатических элементов данных (раздел 11), без базовых классов (раздел 10), и без виртуальных функций (10.3).
Вы должны сделать так, чтобы у вашего класса были эти функции, если вы хотите использовать их в текущем стандарте. Следующий стандарт (см. здесь ) включает положение, позволяющее делать это другим типам.
2 - Есть ли подводные камни в коде?
Вот одна из них: причина, по которой вы не можете добавлять объекты в список поддержки, состоит в том, что он всегда имеет одинаковое количество элементов (размер, с которым он был выделен). В ваш массив вы можете добавлять элементы, но вы все равно создали 10 элементов под капотом во время строительства. это может привести к некоторым удивительным результатам, если пользователь не ожидает конструктор по умолчанию, вызываемый 10 раз.