22 typename std::allocator_traits<Alloc>::value_type;
23 typename std::allocator_traits<Alloc>::pointer;
24 typename std::allocator_traits<Alloc>::const_pointer;
25 typename std::allocator_traits<Alloc>::void_pointer;
26 typename std::allocator_traits<Alloc>::const_void_pointer;
27 typename std::allocator_traits<Alloc>::size_type;
28 typename std::allocator_traits<Alloc>::difference_type;
33 typename std::allocator_traits<Alloc>::size_type n,
34 typename std::allocator_traits<Alloc>::pointer
p,
35 typename std::allocator_traits<Alloc>::value_type& v,
36 const typename std::allocator_traits<Alloc>::value_type&
cv
39 { a.allocate(n) } -> std::same_as<typename std::allocator_traits<Alloc>::pointer>;
40 { a.deallocate(p, n) } -> std::same_as<void>;
43 { std::allocator_traits<Alloc>::max_size(a) } -> std::convertible_to<typename std::allocator_traits<Alloc>::size_type>;
46 { std::allocator_traits<Alloc>::construct(a, p, cv) } -> std::same_as<void>;
47 { std::allocator_traits<Alloc>::destroy(a, p) } -> std::same_as<void>;
50 { std::allocator_traits<Alloc>::select_on_container_copy_construction(a) } -> std::convertible_to<Alloc>;
56 typename Traits::char_type;
57 typename Traits::int_type;
58 typename Traits::off_type;
59 typename Traits::pos_type;
60 typename Traits::state_type;
62 typename Traits::char_type
c1,
63 typename Traits::char_type
c2,
64 typename Traits::char_type&
cr,
65 const typename Traits::char_type&
ccr,
66 typename Traits::char_type*
p,
67 const typename Traits::char_type*
cp,
68 typename Traits::int_type
i1,
69 typename Traits::int_type
i2,
73 { Traits::assign(
cr,
ccr) } -> std::same_as<void>;
74 { Traits::eq(ccr, ccr) } -> std::convertible_to<bool>;
75 { Traits::lt(ccr, ccr) } -> std::convertible_to<bool>;
78 { Traits::compare(cp, cp, n) } -> std::convertible_to<int>;
79 { Traits::length(cp) } -> std::convertible_to<std::size_t>;
80 { Traits::find(cp, n, ccr) } -> std::convertible_to<const typename Traits::char_type*>;
83 { Traits::move(p, cp, n) } -> std::same_as<typename Traits::char_type*>;
84 { Traits::copy(p, cp, n) } -> std::same_as<typename Traits::char_type*>;
85 { Traits::assign(p, n, c1) } -> std::same_as<typename Traits::char_type*>;
88 { Traits::not_eof(i1) } -> std::same_as<typename Traits::int_type>;
89 { Traits::to_char_type(i1) } -> std::same_as<typename Traits::char_type>;
90 { Traits::to_int_type(c1) } -> std::same_as<typename Traits::int_type>;
91 { Traits::eq_int_type(i1, i2) } -> std::convertible_to<bool>;
92 { Traits::eof() } -> std::same_as<typename Traits::int_type>;