From 11633b7d24f2ad7c87ea62768108b0cf9a5e5dfc Mon Sep 17 00:00:00 2001 From: Matei David Date: Thu, 14 Aug 2014 13:54:21 -0400 Subject: [PATCH] don't use extra space for rbtree checkers --- include/boost/intrusive/rbtree_algorithms.hpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/include/boost/intrusive/rbtree_algorithms.hpp b/include/boost/intrusive/rbtree_algorithms.hpp index 2772a12..5ebbd52 100644 --- a/include/boost/intrusive/rbtree_algorithms.hpp +++ b/include/boost/intrusive/rbtree_algorithms.hpp @@ -68,12 +68,7 @@ struct rbtree_node_checker typedef typename value_traits::node_traits node_traits; typedef typename node_traits::node_ptr node_ptr; - struct return_type - : public base_checker_t::return_type - { - return_type() : is_red(false) {} - bool is_red; - }; + typedef typename base_checker_t::return_type return_type; rbtree_node_checker(const NodePtrCompare& comp, ExtraChecker extra_checker) : base_checker_t(comp, extra_checker) @@ -83,11 +78,12 @@ struct rbtree_node_checker const return_type& check_return_left, const return_type& check_return_right, return_type& check_return) { - check_return.is_red = (node_traits::get_color(p) == node_traits::red()); - if (check_return.is_red) + if (node_traits::get_color(p) == node_traits::red()) { - BOOST_INTRUSIVE_INVARIANT_ASSERT(!check_return_left.is_red); - BOOST_INTRUSIVE_INVARIANT_ASSERT(!check_return_right.is_red); + if (node_traits::get_left(p)) + BOOST_INTRUSIVE_INVARIANT_ASSERT(node_traits::get_color(node_traits::get_left(p)) == node_traits::black()); + if (node_traits::get_right(p)) + BOOST_INTRUSIVE_INVARIANT_ASSERT(node_traits::get_color(node_traits::get_right(p)) == node_traits::black()); } base_checker_t::operator()(p, check_return_left, check_return_right, check_return); }