У меня есть простой миксин, который я смешиваю с другими моими шаблонными классами.
template<typename T> class mixin {
static T* null() { return nullptr; }
auto func() -> decltype(null()->func());
};
template<...> class A : public mixin<A<...>> {
....
};
template<...> class B : public mixin<A<...>> {
....
};
template<...> class C : public mixin<A<...>> {
....
};
Теперь у меня проблема.Одна из функций mixin будет возвращать тип, который должен быть выведен в зависимости от производного типа.Но когда я пытаюсь использовать дедукцию, чтобы найти этот тип, компилятор говорит мне, что я использую неопределенный тип.Если я перенесу определение mixin
после классов, то не смогу наследовать его при смешивании. Как я могу изменить свои классы, чтобы разрешить вывод типов в этом случае?