33namespace mdds {
namespace mtv {
namespace detail {
38 using yes_type = char;
41 template<
typename U, std::
size_t (U::*)() const>
49 static no_type test(...);
51 using type = std::conditional_t<sizeof(test<T>(0)) ==
sizeof(yes_type), std::true_type, std::false_type>;
55std::size_t get_block_capacity(
const T& blk, std::true_type)
57 return blk.capacity();
61std::size_t get_block_capacity(
const T&, std::false_type)
67std::size_t get_block_capacity(
const T& blk)
69 typename has_capacity_method<T>::type v;
70 return get_block_capacity(blk, v);
76 using yes_type = char;
79 template<
typename U,
void (U::*)(
typename T::
size_type)>
87 static no_type test(...);
89 using type = std::conditional_t<sizeof(test<T>(0)) ==
sizeof(yes_type), std::true_type, std::false_type>;
93void reserve(T& blk,
typename T::size_type size, std::true_type)
95 return blk.reserve(size);
99void reserve(T&,
typename T::size_type, std::false_type)
103void reserve(T& blk,
typename T::size_type size)
105 typename has_reserve_method<T>::type v;
106 reserve(blk, size, v);
112 using yes_type = char;
115 template<
typename U,
void (U::*)()>
123 static no_type test(...);
125 using type = std::conditional_t<sizeof(test<T>(0)) ==
sizeof(yes_type), std::true_type, std::false_type>;
129void shrink_to_fit(T& blk, std::true_type)
131 return blk.shrink_to_fit();
135void shrink_to_fit(T&, std::false_type)
139void shrink_to_fit(T& blk)
141 typename has_shrink_to_fit_method<T>::type v;
142 shrink_to_fit(blk, v);
148 using type = std::false_type;
154 using type = std::true_type;
157template<
typename Blk>
160 using type =
typename is_std_vector_bool_store<typename Blk::store_type>::type;
Definition: types_util.hpp:43
Definition: types_util.hpp:37
Definition: types_util.hpp:81
Definition: types_util.hpp:75
Definition: types_util.hpp:117
Definition: types_util.hpp:111
Definition: types_util.hpp:159
Definition: types_util.hpp:147