| // PR c++/32241 |
| // { dg-do compile } |
| |
| struct A |
| { |
| typedef int T; |
| T &foo (); |
| A () { foo.~T (); } // { dg-error "10:invalid use of member function|expected" } |
| }; |
| |
| template <typename T> struct B |
| { |
| T &foo (); |
| B () { foo.~T (); } // { dg-error "10:invalid use of member" } |
| }; |
| |
| B<int> b; |
| |
| template <typename T, typename S> struct C |
| { |
| T t; |
| C () { t.~S (); } // { dg-error "13:is not of type" } |
| }; |
| |
| C<int, long int> c; |
| |
| template <typename T> struct D |
| { |
| T t; |
| typedef long int U; |
| D () { t.~U (); } // { dg-error "10:is not of type" } |
| }; |
| |
| D<int> d; |
| |
| template <typename T> struct E |
| { |
| T &foo (); |
| typedef long int U; |
| E () { foo.~U (); } // { dg-error "10:invalid use of member" } |
| }; |
| |
| E<int> e; |