How to force use of curiously recurring template pattern in C++ -
i have following base template class.
template<typename t> class base { public: void do_something() { } }; it intended used curiously recurring template pattern. should inherited class b : public base<b>. must not inherited class b : public base<someoneelse>. want statically enforce requirement. if uses wrong, expect error in compiling phase.
what i'm doing putting static_cast<t const&>(*this) in do_something(). way class inheriting template or inherits class provided template parameter. sorry confusing expression. in plain english, requires b or inherits someoneelse in class b : public base<someoneelse>.
i don't know if it's optimal way achieve this. looks gross me.
however want more. want ensure b someoneelse itself. how can that?
make constructor (or destructor) of base private, , make t friend. way thing can construct/destruct base<t> t.
Comments
Post a Comment