| // { dg-do run } |
| // 981203 bkoz |
| // g++/14687 |
| |
| #include <assert.h> |
| 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; |
| } |