У меня есть std::array<Foo, 10>
, и я хотел бы создать std::array<Bar, 10>
, используя функцию от Foo
до Bar
. Обычно я использовал бы std::transform
так:
array<Bar, 10> bars;
transform(foos.begin(), foos.end(), bars.begin(), [](Foo foo){
return Bar(foo.m_1, foo.m_2);
});
Однако Bar
не имеет конструктора по умолчанию, поэтому я не могу создать массив bars
. Я всегда мог использовать vector
, но было бы неплохо использовать array
, чтобы гарантировать, что у меня всегда будет ровно 10 элементов. Возможно ли это?