]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/test/data/monomorphic/fwd.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / test / data / monomorphic / fwd.hpp
index dcd1b84165d74f2461eb1ac46f9640f518f61b88..82d3ff354dfb643892ebe4af66fe57a7b0777bf2 100644 (file)
@@ -43,9 +43,6 @@ namespace monomorphic {
 
 #if !defined(BOOST_TEST_DOXYGEN_DOC__)
 
-template<typename T, typename Specific>
-class dataset;
-
 template<typename T>
 class singleton;
 
@@ -58,6 +55,12 @@ class array;
 template<typename T>
 class init_list;
 
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \
+    !defined(BOOST_NO_CXX11_HDR_TUPLE)
+template<class dataset_t, class ...Args>
+class delayed_dataset;
+#endif
+
 #endif
 
 // ************************************************************************** //
@@ -73,6 +76,8 @@ struct is_dataset : mpl::false_ {};
 //! A reference to a dataset is a dataset
 template<typename DataSet>
 struct is_dataset<DataSet&> : is_dataset<DataSet> {};
+template<typename DataSet>
+struct is_dataset<DataSet&&> : is_dataset<DataSet> {};
 
 //____________________________________________________________________________//
 
@@ -80,6 +85,18 @@ struct is_dataset<DataSet&> : is_dataset<DataSet> {};
 template<typename DataSet>
 struct is_dataset<DataSet const> : is_dataset<DataSet> {};
 
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+
+//! Helper to check if a list of types contains a dataset
+template<class DataSet, class...>
+struct has_dataset : is_dataset<DataSet> {};
+
+template<class DataSet0, class DataSet1, class... DataSetTT>
+struct has_dataset<DataSet0, DataSet1, DataSetTT...>
+  : std::integral_constant<bool, is_dataset<DataSet0>::value || has_dataset<DataSet1, DataSetTT...>::value>
+{};
+#endif
+
 } // namespace monomorphic
 
 // ************************************************************************** //
@@ -160,6 +177,31 @@ make( std::initializer_list<T>&& );
 
 //____________________________________________________________________________//
 
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \
+    !defined(BOOST_TEST_ERRONEOUS_INIT_LIST)
+//! @overload boost::unit_test::data::make()
+template<class T, class ...Args>
+inline typename std::enable_if<
+  !monomorphic::has_dataset<T, Args...>::value,
+  monomorphic::init_list<T>
+>::type
+make( T&& arg0, Args&&... args );
+#endif
+
+//____________________________________________________________________________//
+
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \
+    !defined(BOOST_NO_CXX11_HDR_TUPLE)
+template<class dataset_t, class ...Args>
+inline typename std::enable_if<
+  monomorphic::is_dataset< dataset_t >::value,
+  monomorphic::delayed_dataset<dataset_t, Args...>
+>::type
+make_delayed(Args... args);
+#endif
+
+//____________________________________________________________________________//
+
 namespace result_of {
 
 //! Result of the make call.