Tipo C ++ de clase envolvente en función miembro estática

Supongo que esto es absolutamente imposible, pero qué pasa si. ¿Es posible obtener de alguna manera el tipo de clase envolvente en una función miembro estática, en cualquier versión de C ++?

class Impossible {
public:
    static void Fun()
    {
        typedef Impossible EnclosingClass;

        // now do something with EnclosingClass ...
    }
}

¿Hay alguna manera de obtener el tipo de la clase adjunta (Impossible en este caso) sin escribir el nombre de la clase en la función?

La razón por la que me gustaría hacer eso es para evitar repetir el nombre de la clase en la función. Podría fácilmente conducir a un error de copia-pegar difícil de encontrar, si algo como esto sucediera:

class SomeOther { // another class, with the same interface as Impossible
public:
    static void Fun()
    {
        typedef Impossible EnclosingClass;
        // whoops, copy-pasted, forgot to change "Impossible" to "SomeOther"

        // now do something with EnclosingClass ...
    }
}

¿Hay una buena manera de evitar que esto suceda? Podría imaginar tocar algo que se declaró privado en la clase adjunta, pero eso me obligaría a escribir código adicional (ya que mi diseño actual no contiene ningún miembro privado inherente, todo es público).

Respuestas a la pregunta(3)

Su respuesta a la pregunta