Can I avoid the redundant base class initializations when using virtual inheritance?
<p>The following code illustrates my problem:</p>

<pre><code>struct Base {
    Base(int n) : n(n) {}

    virtual ~Base() = 0;

    int n;
};

Base::~Base() {}

struct A : public virtual Base {
    A(int n) : Base(n) {}

    virtual ~A() = 0;
};

A::~A() {}

struct B : public virtual Base {
    B(int n) : Base(n) {}

    virtual ~B() = 0;
};

B::~B() {}

struct Test : public virtual A, public virtual B {
    Test(int n) : Base(n), A(n), B(n) {} // how to avoid this duplication?
};

int main() {
    Test c(0);
    (void)c;
}
</code></pre>

<p>As you can see, the <code>Test</code> constructor must initialize <code>Base</code>, <code>A</code> and <code>B</code> explicitly. Is this normal? Or is there way to avoid the redundancy?</p>
