#line 2 "main.ii"

template <class _Tp> struct remove_pointer;

// the below are different
template <class _Tp> struct remove_pointer       {typedef _Tp type;};
template <class _Tp> struct remove_pointer<_Tp*> {typedef _Tp type;};
template <class _Tp> struct remove_pointer<_Tp* const>          {typedef _Tp type;};
template <class _Tp> struct remove_pointer<_Tp* volatile>       {typedef _Tp type;};
template <class _Tp> struct remove_pointer<_Tp* const volatile> {typedef _Tp type;};

int main()
{
}
