20 template<
class T> T*
as() { assert(
isa<T>());
return static_cast<T*
>(
this); }
27 return static_cast<B*
>(
this)->node() == T::Node ?
static_cast<T*
>(
this) :
nullptr;
29 return dynamic_cast<T*
>(
static_cast<B*
>(
this));
Inherit from this class using CRTP, for some nice dynamic_cast-style wrappers.
T * as()
static_cast with debug check.
const T * isa() const
const version.
const T * as() const
const version.
Default Pos/Loc stream output and dump helpers.