указания параметров как Self
Что-то типа:
template <typename T>
struct Foo {
Foo(const Foo&); // copy constructor
};
Может можно и в списке наследования?
Нельзя
Ну тогда наверное эта проблема нерешаема
Просто Visitable<Complete>? Попробовал, нельзя
Если сделать шаблонным параметром шаблона, то, в принципе, можно, мне кажется. То есть хочется просто писать Visitable<Complete>?
Вроде того, без перечисления шаблонных параметров главное
Ну я так понимаю в Visitable нужен конкретный тип, а не шаблон
template<typename T> struct Visitable{};
Ну можно вместо Т шаблонный параметр шаблона. Или не подходит?
Что такое шаблонный параметр шаблона?)
Мне кажется, это вопрос для супы
template <template <typename, typename, typename> typename T> struct Visitable {};
Тебе кажется
Во как, не знал, что так можно вообще)
А по-моему нет
Да, вот это работает, удивительно
Только я не думаю что после такого Visitable будет работать
Ну это и есть шаблонный параметр шаблона
В общем-то очевидно было, что такая штука должна существовать, просто до этого никогда не сталкивался. Осталось теперь решить, стоит ли оно того, выглядит жутко :)
У тебя теперь нет конкретного типа, который Visitable У тебя теперь просто шаблон Что ты с ним будешь делать? Откуда брать типы для подстановки?
@Indev29, а во всех ли случаях вы наследуетесь от своих же шаблонных параметров + от Visitable от них же? Может, достаточно такого интерфейса? template<typename A, typename B, typename C> struct Complete final : Visitable<Complete, A, B, C> {} В крайнем случае, VisitableWrapper<Complete, A, B, C>, который сам будет наследником и A, B, C, и Visitable<Complete<A, B, C>>
Во всех, Visitable это просто mixin, добавляющий некоторый функционал.
Обсуждают сегодня