Optional definition (std::optional
) manages an optional contained value, i.e. a value that may or may not be present. This class template comes with C++17 standard, it is used with CLANG and other C++ compilers which has this standard. A common use case for optional
is the return value of a function that may fail. Any instance of optional<T>
at any given point in time either contains a value or does not contain a value. If an optional<T>
contains a value, the value is guaranteed to be allocated as part of the optional
object footprint, i.e. no dynamic memory allocation ever takes place. Thus, an optional
object models an object, not a pointer, even though operator*() and operator->() are defined.
C++ Builder supports C++17 standards with its CLANG compiler and Bcc Compiler. Optional can be used to define any type of variables as below;
An optional variable can be checked by has_value() method if it has a value or not.
Value optional variable can be obtained by value() property and or value_or(0) method that returns 0 if no value. This C++ Builder VCL Windows application example below explains all;