// { dg-options "--std=c++0x" }
|
// { dg-options "--std=c++0x" }
|
template struct same_type;
|
template struct same_type;
|
template struct same_type {};
|
template struct same_type {};
|
|
|
typedef int & lref;
|
typedef int & lref;
|
typedef int const & clref;
|
typedef int const & clref;
|
typedef int && rref;
|
typedef int && rref;
|
typedef int const && crref;
|
typedef int const && crref;
|
|
|
template
|
template
|
struct S
|
struct S
|
{
|
{
|
typedef T & lref;
|
typedef T & lref;
|
typedef T const & clref;
|
typedef T const & clref;
|
typedef T && rref;
|
typedef T && rref;
|
typedef T const && crref;
|
typedef T const && crref;
|
};
|
};
|
|
|
void f()
|
void f()
|
{
|
{
|
same_type();
|
same_type();
|
same_type();
|
same_type();
|
same_type();
|
same_type();
|
same_type();
|
same_type();
|
|
|
same_type();
|
same_type();
|
same_type();
|
same_type();
|
same_type();
|
same_type();
|
|
|
same_type::lref &, int &>();
|
same_type::lref &, int &>();
|
same_type::lref &&, int &>();
|
same_type::lref &&, int &>();
|
same_type::rref &, int &>();
|
same_type::rref &, int &>();
|
same_type::rref &&, int &&>();
|
same_type::rref &&, int &&>();
|
|
|
same_type::rref, int const &>();
|
same_type::rref, int const &>();
|
same_type::crref, int volatile &&>();
|
same_type::crref, int volatile &&>();
|
same_type::clref, int const &>();
|
same_type::clref, int const &>();
|
}
|
}
|
|
|