48template<
typename ConcreteType,
template<
typename...>
typename CRTPBaseType,
typename... TParams>
62template<
typename ConcreteType,
template<
typename, bool,
typename...>
typename CRTPBaseType,
bool B,
72 friend CRTPBaseType<ConcreteType, B, TParams...>;
77template<
typename ConcreteType,
template<
typename,
template<
bool>
typename,
typename...>
typename CRTPBaseType,
78 template<
bool>
typename It,
typename... TParams>
91template<
typename Tag,
bool Const = false>
94 template<
typename ReturnType>
97 template<
typename... CRTPArgs>
100 template<
typename... Args>
104 template<
bool C,
typename T,
typename...
Ts>
123 template<
bool C,
typename Actual,
typename T,
typename...
Ts>
130 template<
typename Actual,
typename T>
134 return static_cast<Actual*
>(
this)->
template operator()<
T>(
135 Tag{}, o, std::forward<Args>(
args)...
139 template<
typename Actual,
typename T>
143 return static_cast<const Actual*
>(
this)->
template operator()<
T>(
144 Tag{}, o, std::forward<Args>(
args)...
151 template<
typename Actual>
virtual ReturnType operator()(Tag, T, Args...)=0
virtual ReturnType operator()(Tag, T, Args...) const =0
ReturnType operator()(Tag, T o, Args... args) const override
ReturnType operator()(Tag, T o, Args... args) override
A helper class to introduce a virtual method overload per type to a class hierarchy.
A helper class to define CRTP class hierarchies with an additional boolean template template paramete...
const actual_type & actual() const
A helper class to define CRTP class hierarchies with an additional boolean template parameter (this i...
const actual_type & actual() const
A helper class to define CRTP class hierarchies.
const actual_type & actual() const