5 #ifndef VCCC_RANGES_SSIZE_HPP
6 #define VCCC_RANGES_SSIZE_HPP
19 template<
typename T,
bool = (sizeof(T) >
sizeof(std::ptrdiff_t)) >
24 struct ssize_type<T, false> {
25 using type = std::ptrdiff_t;
28 template<
typename T,
typename =
void>
29 struct is_ranges_size_callable : std::false_type {};
31 struct is_ranges_size_callable<T,
void_t<decltype(
vccc::
ranges::size(std::declval<T>()) )>> : std::true_type {};
33 struct ssize_niebloid {
35 constexpr
auto operator()(T&& t)
const {
37 using unsigned_type = std::make_unsigned_t<size_type>;
38 using R =
typename ssize_type<unsigned_type>::type;
61 using namespace niebloid;
constexpr VCCC_INLINE_OR_STATIC detail::ssize_niebloid ssize
returns a signed integer equal to the size of a range
Definition: ssize.hpp:56
constexpr VCCC_INLINE_OR_STATIC detail::size_niebloid size
returns the size of a container or array
Definition: size.hpp:145
#define VCCC_INLINE_OR_STATIC
Definition: inline_or_static.hpp:9
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35