00001
00002 struct X
00003 {};
00004
00006 class A : virtual public X
00007 {};
00008
00010 class B : virtual public X
00011 {
00012 public:
00016 friend int operator-(const B& b1, const B& b2);
00017 };
00018
00020 class AB : public B, public A
00021 {};
00022
00024 class C
00025 {};
00026
00027
00028
00033 inline A operator+(const A& a1, const A& a2) { return A(); }
00034
00039 inline A operator-(const A& a1, const A& a2) { return A(); }
00040
00045 inline A operator-(const AB& ab1, const AB& ab2) { return A(); }
00046
00051 inline C operator+(const C& c1, const C& c2) { return C(); }