У меня есть некоторая зависимость от CRTP, которую я не знаю, как решить. В идеале я хочу поместить как можно больше вещей в базовый класс, например, функции, поэтому мне не нужно переопределять их для каждого класса, который их наследует. Похоже, это вызывает проблему с порядком инициализации, где result_type
зависит от типа, который еще предстоит инициализировать. Вот пример: https://godbolt.org/z/YpfcPB
А вот код:
template<typename T>
struct CRTP_Derived;
template<typename Derived>
struct CRTP
{
using result_type = typename Derived::result_type;
};
template<typename T>
struct CRTP_Derived : public CRTP<CRTP_Derived<T>>
{
using result_type = T;
};
int main()
{
CRTP_Derived<int> a;
return 0;
}