| /* Copyright Bruno da Silva de Oliveira 2003. Use, modification and |
| distribution is subject to the Boost Software License, Version 1.0. |
| (See accompanying file LICENSE_1_0.txt or copy at |
| http://www.boost.org/LICENSE_1_0.txt) |
| */ |
| namespace virtual_ { |
| |
| struct C |
| { |
| public: |
| virtual int f() |
| { |
| return f_abs(); |
| } |
| |
| virtual void bar(int) {} |
| virtual void bar(char*) {} |
| |
| const char* get_name() |
| { |
| return name(); |
| } |
| virtual int dummy() { return 0; } |
| |
| protected: |
| virtual int f_abs() = 0; |
| |
| private: |
| virtual const char* name() { return "C"; } |
| }; |
| |
| struct D |
| { |
| virtual int dummy() { return 0; } |
| }; |
| |
| inline int call_f(C& c) { return c.f(); } |
| inline int call_dummy(C* c) { return c->dummy(); } |
| inline int call_dummy(D* d) { return d->dummy(); } |
| |
| } |