8#ifndef TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED
9#define TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED
17 Option() : nullableValue( nullptr ) {}
19 : nullableValue( new( storage )
T( _value ) )
22 : nullableValue( _other ? new( storage )
T( *_other ) : nullptr )
30 if( &_other !=
this ) {
33 nullableValue =
new( storage )
T( *_other );
39 nullableValue =
new( storage )
T( _value );
46 nullableValue =
nullptr;
58 bool some()
const {
return nullableValue !=
nullptr; }
59 bool none()
const {
return nullableValue ==
nullptr; }
61 bool operator !()
const {
return nullableValue ==
nullptr; }
62 explicit operator bool()
const {
68 alignas(
alignof(
T))
char storage[
sizeof(
T)];
T const & operator*() const
T valueOr(T const &defaultValue) const
Option & operator=(Option const &_other)
const T * operator->() const
Option(Option const &_other)
const GenericPointer< typename T::ValueType > T2 defaultValue
#define T(meth, val, expected)