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)