template<class T>
class david::Optional< T >
The class template david::Optional manages an optional contained value, i.e.
a value that semantically may not be present.
The value inside an optional object may be in either an initialized or uninitialized state. An optional object with a value in initialized state is called engaged, whereas if the value is in uninitialized state, the object is called disengaged.
Interface is similar to std::optional defined in C++14: http://en.cppreference.com/w/cpp/utility/optional
Definition at line 84 of file Common.h.