22#if COMMS_HAS_CPP20_SPAN
71 static constexpr bool Value =
false;
74#if COMMS_HAS_CPP20_SPAN
75template <
typename T, std::
size_t TExt>
76struct IsStdSpan<
std::span<T, TExt> >
78 static constexpr bool Value =
true;
85 using No = comms::util::EmptyStruct<>;
89 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().clear());
95 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
101 using No = comms::util::EmptyStruct<>;
104 template <
typename C>
105 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().reserve(0U));
111 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
117 using No = comms::util::EmptyStruct<>;
120 template <
typename C>
121 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().resize(0U));
127 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
131class HasRemoveSuffixFunc
133 using No = comms::util::EmptyStruct<>;
136 template <
typename C>
137 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().remove_suffix(0U));
143 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
149 using No = comms::util::EmptyStruct<>;
152 template <
typename C>
153 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)));
159 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
163class HasPtrSizeConstructor
165 using No = comms::util::EmptyStruct<>;
168 template <
typename C>
169 static auto test(std::nullptr_t) ->
decltype(C(
static_cast<typename C::const_pointer
>(
nullptr),
static_cast<typename C::size_type
>(0U)));
175 static const bool Value = !std::is_same<No, decltype(test<T>(
nullptr))>::value;
181 using No = comms::util::EmptyStruct<>;
184 template <
typename C>
185 static auto test(std::nullptr_t) ->
decltype(std::declval<C>().max_size());
191 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.