blob: 60996563f49904a4f609e2c95f2f55241400ff39 [file] [log] [blame]
// PR c++/56749
// { dg-require-effective-target c++11 }
enum normal_enum
{
not_scoped1,
not_scoped2
};
enum class scoped_enum
{
scoped1,
scoped2
};
template <normal_enum N=not_scoped1>
class A
{
public:
template <typename T>
void fun ()
{
}
};
template <scoped_enum N=scoped_enum::scoped1>
class B
{
public:
template <typename T>
void fun ()
{
}
};
template <typename T>
void tfun ()
{
A<> a;
a.fun<char>(); //<------------ THIS IS FINE
B<> b_defaulted;
B<scoped_enum::scoped1> b_explicited;
b_defaulted.fun<char>(); //<------------ UNEXPECTED: THIS FAILS
b_defaulted.template fun<char>(); //<------------ THIS IS FINE
b_explicited.fun<char>(); //<------------ UNEXPECTED: THIS FAILS
b_explicited.template fun<char>();//<------------ THIS IS FINE
}
int main(int argc, char const *argv[])
{
tfun<int>();
return 0;
}