From 70e84ad70772dbacf4554c12650bb11a87f5a1ad Mon Sep 17 00:00:00 2001 From: ljfa-ag Date: Sun, 9 Aug 2015 20:18:06 +0200 Subject: Create crtp_tag::sub_this method for convenience --- include/crtp_tag.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/include/crtp_tag.h b/include/crtp_tag.h index 86f070e147..11c41cb5b3 100644 --- a/include/crtp_tag.h +++ b/include/crtp_tag.h @@ -48,6 +48,9 @@ namespace detail private: bool equals(const tag& rhs) const override final; + + Sub& sub_this() { return static_cast(*this); } + const Sub& sub_this() const { return static_cast(*this); } }; template @@ -62,31 +65,31 @@ namespace detail template std::unique_ptr crtp_tag::clone() const& { - return make_unique(static_cast(*this)); + return make_unique(sub_this()); } template std::unique_ptr crtp_tag::move_clone() && { - return make_unique(static_cast(*this)); + return make_unique(std::move(sub_this())); } template tag& crtp_tag::assign(tag&& rhs) { - return static_cast(*this) = dynamic_cast(rhs); + return sub_this() = dynamic_cast(rhs); } template void crtp_tag::accept(tag_visitor& visitor) { - visitor.visit(static_cast(*this)); + visitor.visit(sub_this()); } template bool crtp_tag::equals(const tag& rhs) const { - return static_cast(*this) == static_cast(rhs); + return sub_this() == static_cast(rhs); } } -- cgit 0.0.5-2-1-g0f52