1.56 class BOOST_TEST_DECL test_tree_visitor { public: // test tree visitor interface virtual void visit( test_case const& ) {} virtual bool test_suite_start( test_suite const& ) { return true; } virtual void test_suite_finish( test_suite const& ) {} protected: BOOST_TEST_PROTECTED_VIRTUAL ~test_tree_visitor() {} }; 1.64 class BOOST_TEST_DECL test_tree_visitor { public: // test tree visitor interface virtual bool visit( test_unit const& ) { return true; } virtual void visit( test_case const& tc ) { visit( (test_unit const&)tc ); } virtual bool test_suite_start( test_suite const& ts ){ return visit( (test_unit const&)ts ); } virtual void test_suite_finish( test_suite const& ) {} protected: BOOST_TEST_PROTECTED_VIRTUAL ~test_tree_visitor() {} }; To list test suites and test cases of our test exes, I implemented a custom visitor in Boost 1.56 and simply did const auto& master_ts = but::framework::master_test_suite(); but::traverse_test_tree(master_ts, visitor); This is broken in 1.64, none of the old methods from the visitor are called, and thus no suites or cases are discovered. Two out of 3 of the old methods are forwards to the new visit() method, and obviously the implementation only calls the new visit(). The forwarding should be in the other direction for backward-compatibility. Looking for visit/visitor in http://www.boost.org/doc/libs/1_64_0/libs/test/doc/html/boost_test/change_lo... yield nothing. Can someone please shed some light on this incompatible change? Thanks, --DD