Loading [MathJax]/jax/output/HTML-CSS/config.js
Iros
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Loading...
Searching...
No Matches
intrusive_tag_base.h
Go to the documentation of this file.
1#pragma once
2
4#include "di/types/prelude.h"
5
6namespace di::container {
7template<typename NodeType>
9 template<typename T>
10 constexpr static auto is_sized(InPlaceType<T>) -> bool {
11 return false;
12 }
13
14 template<typename T>
15 constexpr static auto always_store_tail(InPlaceType<T>) -> bool {
16 return true;
17 }
18
19 template<typename T>
20 constexpr static auto node_type(InPlaceType<T>) -> NodeType;
21
22 template<typename T>
23 constexpr static auto down_cast(InPlaceType<T>, NodeType& node) -> T& {
24 return static_cast<T&>(node);
25 }
26
27 constexpr static void did_insert(auto&, auto&) {}
28 constexpr static void did_remove(auto&, auto&) {}
29};
30}
Definition sequence.h:12
Definition intrusive_tag_base.h:8
static constexpr auto is_sized(InPlaceType< T >) -> bool
Definition intrusive_tag_base.h:10
static constexpr auto down_cast(InPlaceType< T >, NodeType &node) -> T &
Definition intrusive_tag_base.h:23
static constexpr void did_insert(auto &, auto &)
Definition intrusive_tag_base.h:27
static constexpr auto always_store_tail(InPlaceType< T >) -> bool
Definition intrusive_tag_base.h:15
static constexpr void did_remove(auto &, auto &)
Definition intrusive_tag_base.h:28
static constexpr auto node_type(InPlaceType< T >) -> NodeType
Definition in_place_type.h:5