| // PR c++/79900 - ICE in strip_typedefs |
| // { dg-do compile } |
| // { dg-options "-Wpadded" } |
| |
| template <class> struct A; |
| template <typename> struct B { // { dg-warning "padding struct size to alignment boundary" } |
| long long _M_off; |
| char _M_state; |
| }; |
| template <> struct A<char> { typedef B<int> pos_type; }; |
| enum _Ios_Openmode {}; |
| struct C { |
| typedef _Ios_Openmode openmode; |
| }; |
| template <typename, typename _Traits> struct D { |
| typedef typename _Traits::pos_type pos_type; |
| pos_type m_fn1(pos_type, C::openmode); |
| }; |
| template class D<char, A<char> >; |
| template <typename _CharT, typename _Traits> |
| typename D<_CharT, _Traits>::pos_type D<_CharT, _Traits>::m_fn1(pos_type x, |
| C::openmode) { return x; } |