jsocketpp 1.0
A cross-platform C++20 socket library.
Loading...
Searching...
No Matches
buffer_traits.hpp
Go to the documentation of this file.
1
28
29#pragma once
30
31#include <cstddef>
32#include <type_traits>
33
51namespace jsocketpp::detail
52{
53
68template <typename T>
69struct is_byte_like : std::bool_constant<std::is_same_v<T, char> || std::is_same_v<T, unsigned char> ||
70 std::is_same_v<T, std::byte> || std::is_same_v<T, std::uint8_t>>
71{
72};
73
82template <typename, typename = void> struct has_resize : std::false_type
83{
84};
85template <typename T>
86struct has_resize<T, std::void_t<decltype(std::declval<T&>().resize(std::size_t{}))>> : std::true_type
87{
88};
89
98template <typename, typename = void> struct has_data : std::false_type
99{
100};
101template <typename T> struct has_data<T, std::void_t<decltype(std::declval<T&>().data())>> : std::true_type
102{
103};
104
113template <typename, typename = void> struct has_size : std::false_type
114{
115};
116template <typename T> struct has_size<T, std::void_t<decltype(std::declval<const T&>().size())>> : std::true_type
117{
118};
119
131template <typename T>
132inline constexpr bool is_dynamic_buffer_v =
134
146template <typename T>
147inline constexpr bool is_fixed_buffer_v =
149
150} // namespace jsocketpp::detail
Implementation details and type traits for jsocketpp buffer management.
constexpr bool is_fixed_buffer_v
Type trait for fixed-size buffer types.
Definition buffer_traits.hpp:147
constexpr bool is_dynamic_buffer_v
Type trait for dynamic buffer types.
Definition buffer_traits.hpp:132
Detection helper for data() member function.
Definition buffer_traits.hpp:99
Detection helper for resize() member function.
Definition buffer_traits.hpp:83
Detection helper for size() member function.
Definition buffer_traits.hpp:114
Type trait to detect byte-like types.
Definition buffer_traits.hpp:71