Iros
 
Loading...
Searching...
No Matches
self_pointer.h
Go to the documentation of this file.
1#pragma once
2
3namespace di::util {
4template<typename T>
5struct SelfPointer {
6 constexpr explicit SelfPointer() : self(static_cast<T*>(this)) {}
7
8 constexpr SelfPointer(SelfPointer const&) : SelfPointer() {}
10
11 // NOLINTNEXTLINE(bugprone-unhandled-self-assignment)
12 constexpr auto operator=(SelfPointer const&) -> SelfPointer& { return *this; }
13 constexpr auto operator=(SelfPointer&&) -> SelfPointer& { return *this; }
14
15 T* self { nullptr };
16};
17}
18
19namespace di {
20using util::SelfPointer;
21}
Definition vocab.h:96
Definition zstring_parser.h:9
constexpr SelfPointer(SelfPointer &&)
Definition self_pointer.h:9
constexpr SelfPointer()
Definition self_pointer.h:6
constexpr SelfPointer(SelfPointer const &)
Definition self_pointer.h:8
T * self
Definition self_pointer.h:15
constexpr auto operator=(SelfPointer &&) -> SelfPointer &
Definition self_pointer.h:13
constexpr auto operator=(SelfPointer const &) -> SelfPointer &
Definition self_pointer.h:12