http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50478
--- Comment #4 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-12-21 12:43:38 UTC --- This is a more correct testcase, which also preserves the property of OT that -pedantic works around the issue. Note: removing the string constructor taking an initializer_list also works around the problem: /////////////////// #include <initializer_list> namespace std { template<typename _Key> struct set { void insert(const _Key&); void insert(initializer_list<_Key>); }; struct string { string(const string&, __SIZE_TYPE__, __SIZE_TYPE__ = -1); string(const char*); string(initializer_list<char>); }; } int main() { std::set<std::string> s; s.insert( { "abc", "def", "hij"} ); }