1 #ifndef DataFormats_Common_WrapperDetail_h 2 #define DataFormats_Common_WrapperDetail_h 11 #include <type_traits> 17 template<
typename T>
class Ptr;
54 return typeid(
typename T::member_type);
83 std::is_same<decltype(has_mergeProduct<T>(
nullptr)),
yes_tag>
::value;
100 return thisProduct.mergeProduct(newProduct);
119 std::is_same<decltype(has_isProductEqual<T>(
nullptr)),
yes_tag>
::value;
136 return thisProduct.isProductEqual(newProduct);
std::type_info const & operator()()
std::type_info const & operator()()
static yes_tag has_isProductEqual(isProductEqual_function< T,&T::isProductEqual > *dummy)
Container::value_type value_type
static yes_tag has_mergeProduct(mergeProduct_function< T,&T::mergeProduct > *dummy)
bool operator()(T const &thisProduct, T const &newProduct)
static constexpr bool value
bool operator()(T &thisProduct, T const &newProduct)
std::type_info const & operator()()
static yes_tag has_member_type(typename T::member_type *)
std::type_info const & operator()()
bool operator()(T const &thisProduct, T const &newProduct)
std::type_info const & operator()()
static yes_tag has_value_type(typename T::value_type *)
bool operator()(T &thisProduct, T const &newProduct)