Creación de instancias de miembro estático de plantilla explícita en una clase derivada

Estoy tratando de implementar una clase de plantilla con un miembro estático. Las clases que se derivan de la clase de plantilla se instanciarán sin la necesidad de escribir código adicional.

Aquí está mi enfoque ingenuo (y no exitoso):

Singleton.h:

template <class T> class Singleton {
protected:
  Singleton();
  static T instance_;
}

// explicit instantiation of 'instance_' ???, 
// where 'instance_' is an instance of the derived class
template <class T> T Singleton<T>::instance_;

ConcreteA.h:

class ConcreteA : public Singleton<ConcreteA> {
public:
  ConcreteA();
  void foo();
}

C Principal:

int main() {
  // an instance of ConcreteA should have been created (no extra code)!!!
  return 0;
}

¿Hay alguna manera de forzar la instanciación deConcreteA simplemente derivandoConcreteA deSingleton, sin escribir código de instanciación adicional?

A solución sucia es llamar a un método eninstance_ en elConcreteA constructor, por ejemplo:

ConcreteA.c

ConcrereA::ConcreteA { instance_.foo(); }

¿Hay mejores soluciones?

Respuestas a la pregunta(4)

Su respuesta a la pregunta