У меня есть класс, который по своей сути не подлежит копированию (поток, так что семантика копирования не имеет смысла), и я хочу иметь их большой массив, идентично созданный с помощью конструктора не по умолчанию. Обратите внимание, что массив имеет фиксированный размер.
Я могу использовать конструктор по умолчанию только с массивами C ++, если я не инициализирую каждый из них независимо.
Thread myArray[128]; // uses default constructor - wrong
Я могу перечислить конструкторы и параметры объекта в явном виде, но это многословно и безобразно
Thread myArray[128] = { Thread(params,...), Thread(params,...), ... x 128 ; // ugly
Кажется, я не могу использовать векторы stl, потому что объект не подлежит копированию - событие, хотя вектор никогда не меняет размер. Я предполагаю, что конструктор действительно копирует!
std::vector<Thread> myVector(128, Thread(params,...));// won't compile
Я решил сделать это с помощью массива умных указателей и цикла инициализации, но, возможно, я что-то упускаю:
Есть ли другой способ - может быть, с буст-контейнерами или контейнером другого типа?