http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55365
--- Comment #2 from Jason <jasongross9+bugzilla at gmail dot com> 2012-11-17 16:10:21 UTC --- And, indeed, here's a somewhat smaller working example, which g++ says "internal compiler error: in lookup_field_1, at cp/search.c:387", and icpc says "error: a designator into a template-dependent type is not allowed" template<typename T> union u { T a; char b; }; template<typename T> u<T> make_u(T t) { return { .a = t }; } int main() { return make_u<int>(1).a; }