|
|
Go to the documentation of this file. 1 #ifndef DataFormats_Common_WrapperDetail_h
2 #define DataFormats_Common_WrapperDetail_h
12 #include <type_traits>
34 static constexpr
bool value = std::is_same<decltype(has_value_type<T>(
nullptr)),
yes_tag>::
value;
56 static constexpr
bool value = std::is_same<decltype(has_member_type<T>(
nullptr)),
yes_tag>::
value;
62 std::type_info
const&
operator()() {
return typeid(
typename T::member_type); }
71 static constexpr
bool value =
true;
79 template <
typename T,
typename Deleter>
81 static constexpr
bool value =
true;
84 template <
typename T,
typename Deleter>
92 template <
typename T,
bool (T::*)(T const&)>
101 static constexpr
bool value = std::is_same<decltype(has_mergeProduct<T>(
nullptr)),
yes_tag>::
value;
106 template <
typename T>
110 template <
typename T>
116 template <
typename T>
118 bool operator()(
T& thisProduct,
T const& newProduct) {
return thisProduct.mergeProduct(newProduct); }
120 template <
typename T>
130 template <
typename T,
bool (T::*)(T const&) const>
132 template <
typename T>
134 template <
typename T>
137 template <
typename T>
139 static constexpr
bool value = std::is_same<decltype(has_isProductEqual<T>(
nullptr)),
yes_tag>::
value;
144 template <
typename T>
148 template <
typename T>
154 template <
typename T>
156 bool operator()(
T const& thisProduct,
T const& newProduct) {
return thisProduct.isProductEqual(newProduct); }
158 template <
typename T>
168 template <
typename T,
void (T::*)(T&)>
170 template <
typename T>
172 template <
typename T>
175 template <
typename T>
182 template <
typename T>
186 template <
typename T>
192 template <
typename T>
194 void operator()(
T& thisProduct,
T& newProduct) { thisProduct.swap(newProduct); }
196 template <
typename T>
bool operator()(T const &thisProduct, T const &newProduct)
std::type_info const & operator()()
std::type_info const & operator()()
std::type_info const & operator()()
bool operator()(T &thisProduct, T const &newProduct)
void operator()(T &thisProduct, T &newProduct)
std::type_info const & operator()()
static yes_tag has_member_type(typename T::member_type *)
static yes_tag has_isProductEqual(isProductEqual_function< T, &T::isProductEqual > *dummy)
void operator()(T &, T &)
static yes_tag has_swap(swap_function< T, &T::swap > *dummy)
bool operator()(T const &thisProduct, T const &newProduct)
Container::value_type value_type
std::type_info const & operator()()
bool operator()(T &thisProduct, T const &newProduct)
static yes_tag has_mergeProduct(mergeProduct_function< T, &T::mergeProduct > *dummy)
TEMPL(T2) struct Divides void
std::type_info const & operator()()
static yes_tag has_value_type(typename T::value_type *)