c++: Add using-declaration testcase
gcc/testsuite/ChangeLog: * g++.dg/lookup/using-decl1.C: New test.
This commit is contained in:
parent
bc99c54de5
commit
f03973251d
|
@ -0,0 +1,38 @@
|
|||
// Testcase from [namespace.udecl] updated by P1787
|
||||
|
||||
namespace A {
|
||||
int x;
|
||||
int f(int);
|
||||
int g;
|
||||
void h();
|
||||
}
|
||||
|
||||
namespace B {
|
||||
int i;
|
||||
struct g { };
|
||||
struct x { };
|
||||
void f(int);
|
||||
void f(double);
|
||||
void g(char); // OK: hides struct g
|
||||
}
|
||||
|
||||
void func() {
|
||||
int i;
|
||||
using B::i; // { dg-error "" } i conflicts
|
||||
void f(char);
|
||||
using B::f; // OK: each f is a function
|
||||
using A::f; // OK, but interferes with B::f(int)
|
||||
f(1); // { dg-error "" } ambiguous
|
||||
static_cast<int(*)(int)>(f)(1); // OK: calls A::f
|
||||
f(3.5); // calls B::f(double)
|
||||
using B::g;
|
||||
g('a'); // calls B::g(char)
|
||||
struct g g1; // g1 has class type B::g
|
||||
using A::g; // { dg-error "" } conflicts with B::g
|
||||
void h();
|
||||
using A::h; // { dg-error "" } conflicts
|
||||
using B::x;
|
||||
using A::x; // OK: hides struct B::x
|
||||
x = 99; // assigns to A::x
|
||||
struct x x1; // x1 has class type B::x
|
||||
}
|
Loading…
Reference in New Issue