OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [g++.old-deja/] [g++.law/] [arm9.C] - Rev 779

Go to most recent revision | 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-message "candidate is" }

int main() {
    B b;
    b.set(F1); // ARM page 309: should call A.set(f1) and that what g++ does,// { dg-error "match" }
               // 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.
}





Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.