|
| | OFvariant () |
| | Constructs a variant holding a default constructed value of the first alternative.
|
| |
| | OFvariant (const OFvariant &rhs) |
| | Copy constructs a variant holding a copy of the value rhs holds.
|
| |
| | OFvariant (OFvariant &&rhs) |
| | Move constructs a variant by moving the value rhs holds.
|
| |
| template<typename T> |
| | OFvariant (T t) |
| | Constructs a variant holding the alternative that most closely matches the given argument.
|
| |
|
| ~OFvariant () |
| | Destroys the value that the variant currently holds.
|
| |
| OFvariant & | operator= (const OFvariant &rhs) |
| | Copy assigns the value rhs holds to *this.
|
| |
| OFvariant & | operator= (OFvariant &&rhs) |
| | Move assigns the value rhs holds to *this.
|
| |
| template<typename T> |
| OFvariant & | operator= (T t) |
| | Converts the given argument to one of the alternatives and assigns it to *this.
|
| |
| size_t | index () const |
| | Get the index of alternative that is currently being held.
|
| |
|
Global types, methods and objects that are somehow related
|
| template<typename Alternative, typename... Alternatives> |
| Alternative * | OFget (OFvariant< Alternatives... > *v) |
| | Try to get a pointer to the given alternative from an OFvariant object.
|
| |
| template<typename Alternative, typename... Alternatives> |
| const Alternative * | OFget (const OFvariant< Alternatives... > *v) |
| | Try to get a pointer to the given alternative from an OFvariant object.
|
| |
| template<typename Result, typename Visitor, typename... Alternatives> |
| Result | OFvisit (Visitor visitor, OFvariant< Alternatives... > &v) |
| | Applies the given visitor to the given OFvariant object.
|
| |
| template<typename Result, typename Visitor, typename... Alternatives> |
| Result | OFvisit (Visitor visitor, const OFvariant< Alternatives... > &v) |
| | Applies the given visitor to the given OFvariant object.
|
| |
template<typename... Alternatives>
class OFvariant< Alternatives >
A class template that represents a type-safe union.
#include "dcmtk/ofstd/ofvriant.h" for using this class
- Template Parameters
-
| Alternatives | a set of types that may be stored in this variant. All types must be (possibly cv-qualified) object types. |
OFvariant is a custom implementation of a subset of C++17's std::variant, see http://en.cppreference.com/w/cpp/utility/variant for a description of std::variant. An instance of OFvariant at any given time holds a value of one of its alternative types. As with unions, if a variant holds a value of some object type T, the object representation of T is allocated directly within the object representation of the variant itself if possible.
- Note
- If no suitable alignment specifiers were available for the target platform, OFvariant will use a fallback implementation that stores the alternative on the heap – as opposite to std::variant.
The preferred way to access an OFvariant object is visitation utilizing OFvisit. If a certain alternative is expected to be held by the variant, OFget may be used to access it directly.
- See also
- OFvisit – Apply a visitor to an OFvariant object.
-
OFget – Get a pointer to the value stored in an OFvariant holding the selected alternative.
-
OFmonostate – A helper type for making OFvariant default constructible.
-
OFin_place –
Tools for in-place construction of objects, e.g. certain OFvariant alternatives.