Simpler "Prevención de clases derivadas" en C ++

Suponiendo que existe una razón legítima para evitar la derivación de alguna clase, Bjarne da una soluciónaqu para la respuesta a "¿Puedo detener a las personas que se derivan de mi clase?"

Sin embargo, pensé en:

class final {
protected:
  final() { }         // line 3
};

class B : private virtual final {
};

class D : public B {  // line 9
};

int main() {
  B b;
  D d;                // line 14
}

Al intentar compilar, uno obtiene:

foo.cpp: In constructor ‘D::D()’:
foo.cpp:3: error: ‘final::final()’ is protected
foo.cpp:9: error: within this context
foo.cpp: In function ‘int main()’:
foo.cpp:14: note: synthesized method ‘D::D()’ first required here 

¿Funciona mi solución para todos los casos? En mi humilde opinión, es mejor porque la clasefinal es genérico y no requiere conocimiento previo de la clase para evitar la derivación de.

Respuestas a la pregunta(2)

Su respuesta a la pregunta