Тип включения C ++ в статической функции-члене

Я предполагаю, что это совершенно невозможно, но что, если. Можно ли как-то получить тип включающего класса в статической функции-члене в любой версии C ++?

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

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

Есть ли способ получить тип окружающего класса (Impossible в данном случае) без записи названия класса в функции?

Причина, по которой я хотел бы сделать это, состоит в том, чтобы избежать повторения имени класса в функции. Это может легко привести к сложной ошибке копирования-вставки, если произойдет нечто подобное:

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 ...
    }
}

Есть ли хороший способ предотвратить подобные вещи? Я мог бы представить, что прикоснулся к чему-то, что было объявлено закрытым во включающем классе, но это заставило бы меня написать дополнительный код (так как мой текущий дизайн не содержит каких-либо внутренних закрытых членов, все является открытым).

Ответы на вопрос(3)

Ваш ответ на вопрос