Я бы хотел, чтобы класс наследовал от базового класса CRTP, который вызывает создание и запуск глобального конструктора до начала main(). Идея состоит в том, чтобы использовать это, чтобы зарегистрировать тип на некоторой карте, которую нужно искать позже. Кажется, что это работает, только если я фактически создал экземпляр класса Derived и использовал базовый класс.Глобальные конструкторы с CRTP
#include <iostream>
class Foo {
public:
Foo() { std::cout << "Foo" << std::endl; }
};
template <typename T>
class Bar {
private:
static Foo foo_;
};
class Test : public Bar<Test> {
};
int main() {
return 0;
}
класс Test
наследует от Bar<Test>
который имеет статическую переменную-член типа Foo
. К сожалению, конструктор Foo
не вызывается. Я хотел бы иметь возможность заставить глобальный конструктор запускаться, когда класс создает экземпляр шаблона с использованием CRTP без необходимости создания экземпляра этого класса. Я был бы доволен решениями, зависящими от реализации.