// { dg-do run } // 981203 bkoz // g++/14687 #include unsigned int gtest; // 7.3.3 the using declaration // p 3 struct belieze { void f(char); void g(char); enum E { e }; union { int x; }; }; struct dominica: belieze { using belieze::f; void f(int i) { f('c'); } // calls belieze::f(char) void g(int i) { g('c'); } // recursively calls dominca::g(int) }; // p 6 namespace A { void f(int i) { gtest = 1; } } using A::f; //f is a synonym for A::f, that is for A::f(int) namespace A { void f(char c) { gtest = 3; } } void foo(void) { f('a'); //calls f(int), even though A::f(char) exits assert (gtest = 1); } void bar(void) { using A::f; //f is a synonm for A::f, that is for A::f(int) and A::f(char) f('a'); //calls f(char) assert (gtest = 3); } int main(void) { foo(); bar(); return 0; }