#ifndef ARABICA_UTILS_GET_PARAM_HPP #define ARABICA_UTILS_GET_PARAM_HPP #ifdef ARABICA_HAVE_BOOST #include #include #endif namespace Arabica { struct nil_t { }; #ifdef ARABICA_HAVE_BOOST template struct get_param { typedef typename boost::mpl::if_< boost::is_base_and_derived , T0 , typename boost::mpl::if_< boost::is_base_and_derived , T1 , DefaultT >::type >::type type; }; // get_param #else template struct chosen_type { typedef T0 type; }; template struct chosen_type { typedef DefaultT type; }; template struct get_param { typedef typename chosen_type::type type; }; #endif template struct get_string_adaptor { typedef typename get_param, T0, T1>::type type; }; } // namespace Arabica #endif