23 lines
525 B
C++
23 lines
525 B
C++
|
template<int N> struct val { char a[N]; };
|
||
|
|
||
|
class Base
|
||
|
{
|
||
|
public:
|
||
|
virtual val<1> get1() const = 0;
|
||
|
virtual val<2> get2() const = 0;
|
||
|
virtual val<3> get3() const = 0;
|
||
|
virtual val<4> get4() const = 0;
|
||
|
};
|
||
|
|
||
|
class Derived : public virtual Base
|
||
|
{
|
||
|
public:
|
||
|
virtual val<1> get1() const { return foo->get1(); }
|
||
|
virtual val<2> get2() const { return foo->get2(); }
|
||
|
virtual val<3> get3() const { return foo->get3(); }
|
||
|
virtual val<4> get4() const { return foo->get4(); }
|
||
|
Base *foo;
|
||
|
};
|
||
|
|
||
|
Base* make() { return new Derived; }
|