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++.law/] [arm9.C] - Rev 154
Compare with Previous | Blame | View Log
// { dg-do assemble }
// GROUPS passed ARM-compliance
#include <iostream>
enum f1 {
F1
};
enum f2 {
F2
};
class A {
public:
void set (f1 f);
};
void A::set (f1 f) { std::cout << "called A f1\n";}
class B : public A {
public:
void set (f2 f);
};
void B::set (f2 f) { std::cout << "called B\n";} // { dg-error "" } candidate
int main() {
B b;
b.set(F1); // ARM page 309: should call A.set(f1) and that what g++ does,// { dg-error "" } .*
// but 13.1 of ARM clearly states that it should call B::set()
// or generate an error because overloading works only for
// functions within the same scope (first page of chapter 13)
// while member of derived and base classes are considered to
// belong to different scopes. Thus B::set() should have
// hidden (completely) the A::set() function.
}