opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
default_construct_on_copy.h
Go to the documentation of this file.
1#pragma once
2
3#include <concepts>
4#include <utility>
5
6namespace osc
7{
8 template<std::default_initializable T>
10 public:
12
13 template<typename... Args>
14 requires std::constructible_from<T, Args&&...>
16 value_{std::forward<Args>(args)...}
17 {}
18
22
24
26 {
27 value_ = T{}; // exception safety: construct it then move-assign it
28 return *this;
29 }
30
32
34
35 T* operator->() { return &value_; }
36 const T* operator->() const { return &value_; }
37 T& operator*() { return value_; }
38 const T& operator*() const { return value_; }
39 T* get() { return value_; }
40 const T* get() const { return value_; }
41
42 void reset() { value_ = T{}; }
43
44 private:
45 T value_;
46 };
47}
Definition default_construct_on_copy.h:9
DefaultConstructOnCopy & operator=(DefaultConstructOnCopy &&) noexcept=default
T * get()
Definition default_construct_on_copy.h:39
DefaultConstructOnCopy(Args &&...args)
Definition default_construct_on_copy.h:15
const T * get() const
Definition default_construct_on_copy.h:40
DefaultConstructOnCopy(const DefaultConstructOnCopy &)
Definition default_construct_on_copy.h:19
void reset()
Definition default_construct_on_copy.h:42
DefaultConstructOnCopy(DefaultConstructOnCopy &&) noexcept=default
const T & operator*() const
Definition default_construct_on_copy.h:38
T & operator*()
Definition default_construct_on_copy.h:37
const T * operator->() const
Definition default_construct_on_copy.h:36
Definition custom_decoration_generator.h:5
constexpr U to(T &&value)
Definition conversion.h:56