...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Forward declares monomorphic datasets interfaces.
namespace boost { namespace unit_test { namespace data { template<typename DataSet> std::enable_if< monomorphic::is_dataset< DataSet >::value, DataSet >::type make(DataSet &&); template<typename T> std::enable_if<!is_container_forward_iterable< T >::value &&!monomorphic::is_dataset< T >::value &&!is_array< typename remove_reference< T >::type >::value, monomorphic::singleton< T > >::type make(T &&); template<typename C> std::enable_if< is_container_forward_iterable< C >::value, monomorphic::collection< C > >::type make(C &&); template<typename T, std::size_t size> monomorphic::array< typename boost::remove_const< T >::type > make(T(&)); monomorphic::singleton< char * > make(char *); monomorphic::singleton< char const * > make(char const *); template<typename T> monomorphic::init_list< T > make(std::initializer_list< T > &&); template<typename T, class ... Args> std::enable_if< !monomorphic::has_dataset< T, Args... >::value, monomorphic::init_list< T >>::type make(T &&, Args &&...); // Delayed dataset instanciation. template<typename dataset_t, class ... Args> std::enable_if< monomorphic::is_dataset< dataset_t >::value, monomorphic::delayed_dataset< dataset_t, Args... >>::type make_delayed(Args... args); namespace monomorphic { template<typename DataSet, class... > struct has_dataset; template<typename DataSet0, typename DataSet1, class... DataSetTT> struct has_dataset<DataSet0, DataSet1, DataSetTT...>; template<typename DataSet> struct is_dataset; template<typename DataSet> struct is_dataset<DataSet &>; template<typename DataSet> struct is_dataset<DataSet &&>; template<typename DataSet> struct is_dataset<DataSet const>; } namespace result_of { template<typename DataSet> struct make; } } } }