According to n2531, the new C++0x initializer-list is allowed in []. Test Case:
#include <map> void test(void) { std::map<std::pair<int,int>,int> the_map; the_map[{0,1}] = 5; } Error: /tmp/test.cc: In function void test(): /tmp/test.cc:6: error: expected primary-expression before { token /tmp/test.cc:6: error: expected ] before { token /tmp/test.cc:6: error: expected ; before { token /tmp/test.cc:6: error: expected primary-expression before ] token /tmp/test.cc:6: error: expected ; before ] token Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ./configure --enable-languages=c++ --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-multilib --disable-bootstrap --prefix /Users/cougar/local/gcc45 : (reconfigured) ./config ure --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-multilib --disable-bootstrap --prefix /Users/cougar/local/gcc45 --enable-languages=c,c++ --no-create --no-recursion Thread model: posix gcc version 4.5.0 20090425 (experimental) (GCC) -- Summary: [C++0x] Initializer list not allowed in [] Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tom dot prince at ualberta dot net GCC host triplet: x86_64-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39901