16#if COMMS_HAS_CPP20_SPAN
65 static constexpr bool Value =
false;
68#if COMMS_HAS_CPP20_SPAN
69template <
typename T, std::
size_t TExt>
70struct IsStdSpan<
std::span<T, TExt> >
72 static constexpr bool Value =
true;
79 using No = comms::util::EmptyStruct<>;
83 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().clear());
89 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
95 using No = comms::util::EmptyStruct<>;
99 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().reserve(0U));
105 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
111 using No = comms::util::EmptyStruct<>;
114 template <
typename C>
115 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().resize(0U));
121 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
125class HasRemoveSuffixFunc
127 using No = comms::util::EmptyStruct<>;
130 template <
typename C>
131 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().remove_suffix(0U));
137 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
143 using No = comms::util::EmptyStruct<>;
146 template <
typename C>
147 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().assign(
static_cast<typename C::const_pointer
>(
nullptr),
static_cast<typename C::const_pointer
>(
nullptr)));
153 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
157class HasPtrSizeConstructor
159 using No = comms::util::EmptyStruct<>;
162 template <
typename C>
163 static auto test(std::nullptr_t) ->
decltype(C(
static_cast<typename C::const_pointer
>(
nullptr),
static_cast<typename C::size_type
>(0U)));
169 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
175 using No = comms::util::EmptyStruct<>;
178 template <
typename C>
179 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().max_size());
185 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
Contains various compiler related definitions.
Main namespace for all classes / functions of COMMS library.
Replacement to some types from standard type_traits.