blob: 79fcd84bebde02e902ceaa70947f3e20008a4846 [file] [log] [blame]
// PR c++/58878
// Template-members of non-template class
struct A
{
template <typename t> // { dg-message "template parameter" }
void f()
{
int t = 1; // { dg-error "shadows" }
}
template <typename t>
void g();
};
template <typename t> // { dg-message "template parameter" }
void A::g()
{
int t = 2; // { dg-error "shadows" }
}
// (Non-template) Members of template class
template <typename t> // { dg-message "template parameter" }
struct B
{
void f()
{
int t = 3; // { dg-error "shadows" }
}
void g();
};
template <typename t> // { dg-message "template parameter" }
void B<t>::g()
{
int t = 4; // { dg-error "shadows" }
}
// Template members of template class
template <typename t> // { dg-message "template parameter" }
struct C
{
template <typename s> // { dg-message "template parameter" }
void f()
{
int t = 5; // { dg-error "shadows" }
int s = 6; // { dg-error "shadows" }
}
template <typename s>
void g();
};
template <typename t> // { dg-message "template parameter" }
template <typename s> // { dg-message "template parameter" }
void C<t>::g()
{
int t = 7; // { dg-error "shadows" }
int s = 8; // { dg-error "shadows" }
}