http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53494
--- Comment #22 from Paolo Carlini <paolo.carlini at oracle dot com> 2012-06-08 09:27:34 UTC --- A tad simpler: template<typename T, typename U> struct pair { T first; U second; pair(const T&, const U&); }; template<typename T> struct array { typedef T value_type; value_type data[1]; }; array<pair<int, int> const> matchSynonyms{ { 1, 1 } };