BOOST_TEST(p2.empty());
do_((BOOST_TEST(!p2.template is_registered<Types>()),0)...);
+
+#if !defined(BOOST_MSVC)&&\
+ BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(804))
+ /* Very odd behavior probably due to std::unordered_map allocator move
+ * ctor being implemented with move assignment, as reported in
+ * https://github.com/boostorg/poly_collection/issues/16
+ */
+
+ if(!(Propagate&&!AlwaysEqual))
+#endif
BOOST_TEST(p3.get_allocator().comes_from(root2));
}
{
if(!((Propagate&&AlwaysEqual)||(!Propagate&&!AlwaysEqual)))
#endif
+#if !defined(BOOST_MSVC)&&\
+ BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(804))
+ /* std::unordered_map copy assignment does not propagate allocators, as
+ * reported in https://github.com/boostorg/poly_collection/issues/16
+ */
+
+ if(!Propagate)
+#endif
BOOST_TEST(p2.get_allocator().comes_from(Propagate?root1:root2));
}
#if BOOST_WORKAROUND(BOOST_MSVC,<=1900)
if(!((Propagate&&AlwaysEqual)||(!Propagate&&!AlwaysEqual)))
#endif
+#if !defined(BOOST_MSVC)&&\
+ BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(804))
+ /* std::unordered_map move assignment does not propagate equal allocators,
+ * as reported in https://github.com/boostorg/poly_collection/issues/16
+ */
+
+ if(!(Propagate&&AlwaysEqual))
+#endif
BOOST_TEST(p3.get_allocator().comes_from(Propagate?root1:root2));
}
#if BOOST_WORKAROUND(BOOST_MSVC,<=1900)
&&!((Propagate&&AlwaysEqual)||(!Propagate&&!AlwaysEqual))
#endif
+#if !defined(BOOST_MSVC)&&\
+ BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(804))
+ /* std::unordered_map::swap does not swap equal allocators, as reported
+ * in https://github.com/boostorg/poly_collection/issues/16
+ */
+
+ &&!(Propagate&&AlwaysEqual)
+#endif
){
BOOST_TEST(p2.get_allocator().comes_from(Propagate?root2:root1));
BOOST_TEST(p3.get_allocator().comes_from(Propagate?root1:root2));