@@ -820,14 +820,27 @@ void test_get_child_put_child(PTREE *)
820
820
BOOST_TEST (cpt2.get_child (T (" k2.k" )) == pt);
821
821
822
822
// Do correct extractions via get_child (default value version)
823
- BOOST_TEST (pt1.get_child (T (" k1" ), PTREE (T (" def" ))) != PTREE (T (" def" )));
824
- BOOST_TEST (pt1.get_child (T (" k2.k" ), PTREE (T (" def" ))) != PTREE (T (" def" )));
825
- BOOST_TEST (pt2.get_child (T (" k1" ), PTREE (T (" def" ))) == pt);
826
- BOOST_TEST (pt2.get_child (T (" k2.k" ), PTREE (T (" def" ))) == pt);
827
- BOOST_TEST (cpt1.get_child (T (" k1" ), PTREE (T (" def" ))) != PTREE (T (" def" )));
828
- BOOST_TEST (cpt1.get_child (T (" k2.k" ), PTREE (T (" def" ))) != PTREE (T (" def" )));
829
- BOOST_TEST (cpt2.get_child (T (" k1" ), PTREE (T (" def" ))) == pt);
830
- BOOST_TEST (cpt2.get_child (T (" k2.k" ), PTREE (T (" def" ))) == pt);
823
+ PTREE dflt (T (" def" ));
824
+ BOOST_TEST (pt1.get_child (T (" k1" ), dflt) != dflt);
825
+ BOOST_TEST (pt1.get_child (T (" k2.k" ), dflt) != dflt);
826
+ BOOST_TEST (pt2.get_child (T (" k1" ), dflt) == pt);
827
+ BOOST_TEST (pt2.get_child (T (" k2.k" ), dflt) == pt);
828
+ BOOST_TEST (cpt1.get_child (T (" k1" ), dflt) != dflt);
829
+ BOOST_TEST (cpt1.get_child (T (" k2.k" ), dflt) != dflt);
830
+ BOOST_TEST (cpt2.get_child (T (" k1" ), dflt) == pt);
831
+ BOOST_TEST (cpt2.get_child (T (" k2.k" ), dflt) == pt);
832
+
833
+ // Ensure that get_child does not compile when using temporaries as the default value.
834
+ BOOST_TEST ((!boost::mp11::mp_valid<get_child_accepts_default_of_type, const PTREE&, CHTYPE, PTREE>::value));
835
+ BOOST_TEST ((!boost::mp11::mp_valid<get_child_accepts_default_of_type, const PTREE&, CHTYPE, const PTREE>::value));
836
+ BOOST_TEST ((!boost::mp11::mp_valid<get_child_accepts_default_of_type, PTREE&, CHTYPE, PTREE>::value));
837
+ BOOST_TEST ((!boost::mp11::mp_valid<get_child_accepts_default_of_type, PTREE&, CHTYPE, const PTREE>::value));
838
+
839
+ // Test get_child_accepts_default_of_type itself
840
+ BOOST_TEST ((boost::mp11::mp_valid<get_child_accepts_default_of_type, const PTREE&, CHTYPE, PTREE&>::value));
841
+ BOOST_TEST ((boost::mp11::mp_valid<get_child_accepts_default_of_type, const PTREE&, CHTYPE, const PTREE&>::value));
842
+ BOOST_TEST ((boost::mp11::mp_valid<get_child_accepts_default_of_type, PTREE&, CHTYPE, PTREE&>::value));
843
+ BOOST_TEST ((boost::mp11::mp_valid<get_child_accepts_default_of_type, PTREE&, CHTYPE, const PTREE&>::value));
831
844
832
845
// Do correct extractions via get_child (optional version)
833
846
boost::optional<PTREE &> opt;
0 commit comments