Simbody
3.7
|
Ensures that a data member of type T
is automatically reinitialized to a given initial value upon copy construction or copy assignment. This allows the compiler-generated default copy methods to be used.
More...
Public Member Functions | |
ReinitOnCopy ()=delete | |
Default constructor is deleted; use ResetOnCopy instead. More... | |
ReinitOnCopy (const T &value) | |
Construct or implicitly convert from an object of type T . This sets both the current and remembered initial value to the given value . More... | |
ReinitOnCopy (T &&value) | |
Construct or implicitly convert from an rvalue object of type T . This sets both the current and remembered initial value to the given value . More... | |
ReinitOnCopy (const ReinitOnCopy &source) | |
Copy constructor sets the value and remembered initial value to the initial value in the source, using type T 's copy constructor. More... | |
ReinitOnCopy (ReinitOnCopy &&source) | |
Move constructor is simply a pass-through to the move constructor of the contained object for both the current and initial values. More... | |
ReinitOnCopy & | operator= (const ReinitOnCopy &ignored) |
Copy assignment reinitializes this object to its original condition; the source argument is ignored. More... | |
ReinitOnCopy & | operator= (ReinitOnCopy &&source) |
Move assignment uses type T 's move assignment for the current value but does not change the remembered initial value here. More... | |
ReinitOnCopy & | operator= (const T &value) |
Assignment from an object of type T uses T 's copy assignment operator; affects only the current value but does not change the remembered initial value. More... | |
ReinitOnCopy & | operator= (T &&value) |
Assignment from an rvalue object of type T uses T 's move or copy assignment operator; affects only the current value but does not change the remembered initial value. More... | |
const T & | getT () const |
Return a const reference to the contained object of type T . More... | |
T & | updT () |
Return a writable reference to the contained object of type T . More... | |
const T & | getReinitT () const |
(Advanced) Return a const reference to the stored initial value. More... | |
T & | updReinitT () |
(Advanced) Return a writable reference to the stored initial value. Use of this should be rare and restricted to constructors. More... | |
Ensures that a data member of type T
is automatically reinitialized to a given initial value upon copy construction or copy assignment. This allows the compiler-generated default copy methods to be used.
The template type T
here is required to be CopyAssignable
,
CopyConstructible
, and Destructible
, and cannot be an array type. There is space overhead here for one extra copy of T
used to hold the initial value. The default constructor is suppressed here; if you just need the data member reset to zero or to its default-constructed value, use class ResetOnCopy<T>
instead. That class has zero overhead and accepts a wider range of template arguments.
Here are some usage examples:
Other than copy behavior, an object of type ReinitOnCopy<T>
behaves just like the underlying object of type T
. It will implicitly convert to T
when needed, and inherit constructors, assignment, and other methods from T
. Move construction and move assignment behave as they would for T
, and an assignment from an object of type T
to an object of type ReinitOnCopy<T>
will invoke T
's ordinary copy assignment operator if there is one, and fail to compile if an attempt is made to use a non-existent assignment operator.
T | Template type that is a numeric, character, enum, or pointer built-in type, or a class type that is CopyConstructible, CopyAssignable, and Destructible. Array types are not allowed. |
|
delete |
Default constructor is deleted; use ResetOnCopy instead.
|
inline |
Construct or implicitly convert from an object of type T
. This sets both the current and remembered initial value to the given value
.
|
inline |
Construct or implicitly convert from an rvalue object of type T
. This sets both the current and remembered initial value to the given value
.
|
inline |
Copy constructor sets the value and remembered initial value to the initial value in the source, using type T
's copy constructor.
The current value of the source is ignored.
|
inline |
Move constructor is simply a pass-through to the move constructor of the contained object for both the current and initial values.
|
inline |
Copy assignment reinitializes this object to its original condition; the source argument is ignored.
|
inline |
Move assignment uses type T
's move assignment for the current value but does not change the remembered initial value here.
|
inline |
Assignment from an object of type T
uses T
's copy assignment operator; affects only the current value but does not change the remembered initial value.
|
inline |
Assignment from an rvalue object of type T
uses T
's move or copy assignment operator; affects only the current value but does not change the remembered initial value.
|
inline |
Return a const reference to the contained object of type T
.
|
inline |
Return a writable reference to the contained object of type T
.
|
inline |
(Advanced) Return a const reference to the stored initial value.
|
inline |
(Advanced) Return a writable reference to the stored initial value. Use of this should be rare and restricted to constructors.