16
In C++0x the standard defines the Initializer List as an improvement for this kind of (awkward) construct.
It's much easier now:
std::set<int> set = {10, 20, 30, 40, 50};
All it took was for the standard library to declare the following constructor for set:
template <typename Value, typename Compare, typename Allocator>
set<Value, Compare, Allocator>::set(std::initializer_list<Value> list);
and all our worries were neatly swiped away.