URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.old-deja/] [g++.benjamin/] [14687.C] - Rev 154
Compare with Previous | Blame | View Log
// { 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;
}