diff options
Diffstat (limited to 'odb/semantics/elements.hxx')
-rw-r--r-- | odb/semantics/elements.hxx | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/odb/semantics/elements.hxx b/odb/semantics/elements.hxx index b52acc3..d0156dd 100644 --- a/odb/semantics/elements.hxx +++ b/odb/semantics/elements.hxx @@ -114,11 +114,12 @@ namespace semantics public: template <typename X> - bool - is_a () const - { - return dynamic_cast<X const*> (this) != 0; - } + X* + is_a () {return dynamic_cast<X*> (this);} + + template <typename X> + const X* + is_a () const {return dynamic_cast<const X*> (this);} }; // @@ -165,11 +166,12 @@ namespace semantics public: template <typename X> - bool - is_a () const - { - return dynamic_cast<X const*> (this) != 0; - } + X* + is_a () {return dynamic_cast<X*> (this);} + + template <typename X> + const X* + is_a () const {return dynamic_cast<const X*> (this);} public: node (path const& file, size_t line, size_t column, tree); |