1 // checking ICE in canonical typing 2 3 class A; 4 5 template <typename> struct B 6 { 7 typedef A type; 8 }; 9 10 template <class T> class C 11 : public B<T>::type 12 { 13 } __attribute__ ((__may_alias__)); 14 15 class A 16 { 17 operator const C<int> &() 18 { 19 return *static_cast<const C<int> *> (this); 20 } 21 }; 22