26template<
typename,
typename =
void>
30struct has_push_back<T, std::void_t<decltype(std::declval<T>().push_back(std::declval<typename T::value_type>()))>>
33template<
typename,
typename =
void>
37struct has_size<T, std::void_t<decltype(std::declval<T>().size())>>
40template<
typename,
typename =
void>
44struct has_clear<T, std::void_t<decltype(std::declval<T>().clear())>>
47template<
typename,
typename =
void>
51struct has_reserve<T, std::void_t<decltype(std::declval<T>().reserve(std::size_t{}))>>
54template<
typename,
typename =
void>
58struct has_begin_end<T, std::void_t<decltype(std::declval<T>().begin()), decltype(std::declval<T>().end())>>
61template<
typename,
typename =
void>
65struct has_subscript<T, std::void_t<decltype(std::declval<T>()[std::size_t{}])>>
75template<
typename Container>
86template<
typename Container>
107template<
typename T, std::
size_t Capacity = 64>
121template<
typename Container>
124 container.reserve(capacity);
Fixed-capacity vector with no heap allocation.
std::vector< T > DynamicPacketStorage
Default packet storage using heap allocation.
constexpr bool IsValidPacketStorage_v
void ReserveIfPossible(Container &container, std::size_t capacity)
Helper to reserve capacity (no-op for static storage).
Fixed-capacity vector with stack allocation (no heap).
Concept-like check for valid packet storage containers.
static constexpr bool value