У меня есть 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 элементов. Возможно ли это?