8 struct IntrusivePtrIncrement {
9 template<
typename Tag,
typename T>
10 requires(concepts::TagInvocable<IntrusivePtrIncrement, InPlaceType<Tag>, T*>)
11 constexpr void operator()(InPlaceType<Tag>, T* ptr)
const {
16 struct IntrusivePtrDecrement {
17 template<
typename Tag,
typename T>
18 requires(concepts::TagInvocable<IntrusivePtrDecrement, InPlaceType<Tag>, T*>)
19 constexpr void operator()(InPlaceType<Tag>, T* ptr)
const {
29 template<
typename T,
typename Tag>
30 concept IntrusivePtrValid =
requires(T* pointer) {
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto intrusive_ptr_decrement
Definition intrusive_ptr_cpo.h:26
constexpr auto intrusive_ptr_increment
Definition intrusive_ptr_cpo.h:25
constexpr auto in_place_type
Definition in_place_type.h:12