template <typename T>
class Optional
Defined at line 41 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
Used by cmdline::ArgsParser to represent a command line switches that may or
may not be present on the command line.
This class is an improved alternative to std::optional
<T
> because it does
not implement "operator bool()". Unfortunately, since std::optional
<
> does
implement "operator bool()", it is very easy to make the mistake of using
the |std::optional
<
>| in boolean expressions that should instead by using
the wrapped boolan value.
For example, the following code will execute the do_this_when_true() function
because |my_flag| returns true, indicating the optional variable is set to
a value:
std::optional
<bool
> my_flag = false;
if (my_flag) {
do_this_when_true();
}
But the value is false! The caller should have used something like:
if (my_flag.value()) {
A similar option exists for non-bool types that may be implicitly cast to
bool, such as ints and floats.
This class does not provide all of the features of std::optional, but is
simply intended to support the potential ambiguity of std::optional
<bool
>.
Public Methods
void Optional<T> ()
Defined at line 43 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
void Optional<T> (T value)
Defined at line 44 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
void Optional<T> (const Optional<T> & rhs)
Use default copy/move constructors.
Defined at line 47 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
Optional<T> & operator= (const Optional<T> & rhs)
Defined at line 48 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
void Optional<T> (Optional<T> && rhs)
Defined at line 49 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
Optional<T> & operator= (Optional<T> && rhs)
Defined at line 50 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
Optional<T> & operator= (T value)
Allow assignment from T.
Defined at line 53 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
Optional<T> & operator= (std::nullopt_t )
Allow assignment from std::nullopt_t.
Defined at line 59 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
bool has_value ()
Basic std::optional functionality.
Defined at line 68 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
const T & value ()
Defined at line 70 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
T & value ()
Defined at line 71 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
const T & operator* ()
Defined at line 73 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
T & operator* ()
Defined at line 74 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
T value_or (T default_value)
Defined at line 76 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
void reset ()
Defined at line 78 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
template <typename... Args>
T & emplace (Args &&... args)
Defined at line 81 of file ../../zircon/system/ulib/cmdline/include/lib/cmdline/optional.h
Friends
template <typename U>
bool Optional (const Optional<U> & lhs, const Optional<U> & rhs)
template <typename U>
bool Optional (const Optional<U> & lhsconst Optional<U> & rhs)