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