В C ++ 0x стандарт определяет Список инициализаторов как улучшение для этого вида (неудобной) конструкции.
Теперь все намного проще:
std::set<int> set = {10, 20, 30, 40, 50};
Все что потребовалось, чтобы стандартная библиотека объявила следующий конструктор для set:
template <typename Value, typename Compare, typename Allocator>
set<Value, Compare, Allocator>::set(std::initializer_list<Value> list);
, и все наши заботы были аккуратно убраны.