Когда Foo
не имеет конструктора по умолчанию, использование std::unordered_map::operator[]
не может работать. Но все, что не требует построения Foo по умолчанию, будет работать, например, инициализации:
std::unordered_map<int, Foo> map {
{10, Foo{42}},
{20, Foo{43}}
};
, а также на месте строительство новой записи:
map.emplace(11223344, 100);