24 #include "VariantSrc.hpp" 27 #include <type_traits> 46 template<
typename T >
49 using data_t = variantSrc::variant< T, detail::Empty >;
70 operator=(
Option && other )
74 m_data.template emplace< 0 >( std::move( other.
get() ) );
84 operator=(
Option const & other )
88 m_data.template emplace< 0 >( other.
get() );
98 operator==(
Option const & other )
const 112 return get() == other.
get();
118 operator!=(
Option const & other )
const 120 return !( *
this == other );
129 return m_data.index() == 0;
135 operator bool()
const 149 return variantSrc::template get< T >( m_data );
161 return variantSrc::template get< T >( m_data );
165 template<
typename T >
167 makeOption(
T && val )
170 std::forward< T >( val ) );
Option(T data)
Create a full Option.
Definition: Option.hpp:63
Option()
Create an empty Option.
Definition: Option.hpp:55
Definition: Container.cpp:51
Simple Option type based on variantSrc::variant.
Definition: Option.hpp:47
Public definitions of openPMD-api.
Definition: Date.cpp:29
T const & get() const
Access the emplaced object if one is present.
Definition: Option.hpp:147
Definition: Option.hpp:36
bool has_value() const
Definition: Option.hpp:127