¿Hay alguna manera de evitar que una clase se derive dos veces usando una afirmación estática y un rasgo de tipo?

Me doy cuenta de que este es un ejemplo artificial, pero quiero una verificación de compilación para evitar esto ...

class A {};
class B : public A {};
class C : public A {};

class D : public B, public C
{
    BOOST_STATIC_ASSERT((is_base_of_once<A,D>::value))
};