1 #ifndef DataFormats_Common_WrapperDetail_h 2 #define DataFormats_Common_WrapperDetail_h 11 #include <type_traits> 16 template<
typename T>
class Ptr;
36 thisProduct.swap(otherProduct);
41 thisProduct = otherProduct;
76 return typeid(
typename T::member_type);
105 std::is_same<decltype(has_mergeProduct<T>(
nullptr)),
yes_tag>
::value;
122 return thisProduct.mergeProduct(newProduct);
141 std::is_same<decltype(has_isProductEqual<T>(
nullptr)),
yes_tag>
::value;
158 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)
bool operator()(T &thisProduct, T const &newProduct)
std::type_info const & operator()()
static yes_tag has_member_type(typename T::member_type *)
static constexpr bool value
std::type_info const & operator()()
bool operator()(T const &thisProduct, T const &newProduct)
std::type_info const & operator()()
void operator()(T &thisProduct, T &otherProduct)
static yes_tag has_value_type(typename T::value_type *)
void operator()(T &thisProduct, T &otherProduct)
bool operator()(T &thisProduct, T const &newProduct)
static yes_tag has_swap(swap_function< T,&T::swap > *dummy)