iceoryx2
C++ Language Bindings
Loading...
Searching...
No Matches
iox2::bb::stl::Optional< T > Class Template Reference

A drop-in replacement for C++17 std::optional. More...

#include <optional.hpp>

Public Types

using value_type = T
 

Public Member Functions

constexpr Optional () noexcept
 
constexpr Optional (const Optional &rhs)=default
 
constexpr Optional (Optional &&rhs)=default
 
constexpr Optional (const NulloptT &) noexcept
 
template<typename U = std::remove_cv_t<T>, std::enable_if_t< std::is_constructible< T, U >::value &&!std::is_same< std::decay_t< U >, Optional< T > >::value &&!std::is_same< std::decay_t< U >, NulloptT >::value, bool > = true>
constexpr Optional (U &&value)
 
template<typename... Args>
constexpr auto emplace (Args &&... args) noexcept -> T &
 
IOX2_CONSTEXPR_DTOR ~Optional ()=default
 
constexpr auto operator= (NulloptT &) noexcept -> Optional &
 
constexpr auto operator= (const Optional &rhs) -> Optional &=default
 
constexpr auto operator= (Optional &&rhs) -> Optional &=default
 
constexpr auto operator-> () const noexcept -> const T *
 
constexpr auto operator-> () noexcept -> T *
 
constexpr auto operator* () const &noexcept -> const T &
 
constexpr auto operator* () &noexcept -> T &
 
constexpr auto operator* () &&noexcept -> T &&
 
constexpr auto operator* () const &&noexcept -> const T &&
 
constexpr operator bool () const noexcept
 
constexpr auto has_value () const noexcept -> bool
 
constexpr auto value (const bb::detail::SourceLocation location=bb::detail::SourceLocation::current()) const &-> const T &
 
constexpr auto value (const bb::detail::SourceLocation location=bb::detail::SourceLocation::current()) &-> T &
 
constexpr auto value (const bb::detail::SourceLocation location=bb::detail::SourceLocation::current()) &&-> T &&
 
constexpr auto value (const bb::detail::SourceLocation location=bb::detail::SourceLocation::current()) const &&-> const T &&
 
template<class U = std::remove_cv_t<T>>
constexpr auto value_or (U &&fallback) const &-> T
 
template<class U = std::remove_cv_t<T>>
constexpr auto value_or (U &&fallback) &&-> T
 
constexpr auto reset () noexcept -> void
 

Friends

auto operator== (const Optional< T > &lhs, NulloptT) noexcept -> bool
 
auto operator== (NulloptT, const Optional< T > &rhs) noexcept -> bool
 
auto operator!= (const Optional< T > &lhs, NulloptT) noexcept -> bool
 
auto operator!= (NulloptT, const Optional< T > &rhs) noexcept -> bool
 

Detailed Description

template<typename T>
class iox2::bb::stl::Optional< T >

A drop-in replacement for C++17 std::optional.

Todo:
Iterator and monadic APIs.

Definition at line 172 of file optional.hpp.

Member Typedef Documentation

◆ value_type

template<typename T >
using iox2::bb::stl::Optional< T >::value_type = T

Definition at line 178 of file optional.hpp.

Constructor & Destructor Documentation

◆ Optional() [1/5]

template<typename T >
constexpr iox2::bb::stl::Optional< T >::Optional ( )
inlineconstexprnoexcept

Definition at line 181 of file optional.hpp.

◆ Optional() [2/5]

template<typename T >
constexpr iox2::bb::stl::Optional< T >::Optional ( const Optional< T > &  rhs)
constexprdefault

◆ Optional() [3/5]

template<typename T >
constexpr iox2::bb::stl::Optional< T >::Optional ( Optional< T > &&  rhs)
constexprdefault

◆ Optional() [4/5]

template<typename T >
constexpr iox2::bb::stl::Optional< T >::Optional ( const NulloptT )
inlineconstexprnoexcept

Definition at line 189 of file optional.hpp.

◆ Optional() [5/5]

template<typename T >
template<typename U = std::remove_cv_t<T>, std::enable_if_t< std::is_constructible< T, U >::value &&!std::is_same< std::decay_t< U >, Optional< T > >::value &&!std::is_same< std::decay_t< U >, NulloptT >::value, bool > = true>
constexpr iox2::bb::stl::Optional< T >::Optional ( U &&  value)
inlineconstexpr

Definition at line 197 of file optional.hpp.

◆ ~Optional()

template<typename T >
IOX2_CONSTEXPR_DTOR iox2::bb::stl::Optional< T >::~Optional ( )
default

Member Function Documentation

◆ emplace()

template<typename T >
template<typename... Args>
constexpr auto iox2::bb::stl::Optional< T >::emplace ( Args &&...  args) -> T&
inlineconstexprnoexcept

◆ has_value()

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::has_value ( ) const -> bool
inlineconstexprnoexcept

◆ operator bool()

template<typename T >
constexpr iox2::bb::stl::Optional< T >::operator bool ( ) const
inlineexplicitconstexprnoexcept

◆ operator*() [1/4]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator* ( ) && -> T&&
inlineconstexprnoexcept

Definition at line 249 of file optional.hpp.

References IOX2_ENFORCE_INTERNAL.

◆ operator*() [2/4]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator* ( ) & -> T&
inlineconstexprnoexcept

◆ operator*() [3/4]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator* ( ) const && -> const T&&
inlineconstexprnoexcept

Definition at line 257 of file optional.hpp.

References IOX2_ENFORCE_INTERNAL.

◆ operator*() [4/4]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator* ( ) const & -> const T&
inlineconstexprnoexcept

◆ operator->() [1/2]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator-> ( ) const -> const T*
inlineconstexprnoexcept

◆ operator->() [2/2]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator-> ( ) -> T*
inlineconstexprnoexcept

◆ operator=() [1/3]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator= ( const Optional< T > &  rhs) -> Optional &=default
constexprdefault

◆ operator=() [2/3]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator= ( NulloptT ) -> Optional&
inlineconstexprnoexcept

Definition at line 216 of file optional.hpp.

◆ operator=() [3/3]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::operator= ( Optional< T > &&  rhs) -> Optional &=default
constexprdefault

◆ reset()

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::reset ( ) -> void
inlineconstexprnoexcept

◆ value() [1/4]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::value ( const bb::detail::SourceLocation  location = bb::detail::SourceLocation::current()) && -> T&&
inlineconstexpr

Definition at line 286 of file optional.hpp.

References IOX2_ENFORCE_INTERNAL.

◆ value() [2/4]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::value ( const bb::detail::SourceLocation  location = bb::detail::SourceLocation::current()) & -> T&
inlineconstexpr

◆ value() [3/4]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::value ( const bb::detail::SourceLocation  location = bb::detail::SourceLocation::current()) const && -> const T&&
inlineconstexpr

Definition at line 293 of file optional.hpp.

References IOX2_ENFORCE_INTERNAL.

◆ value() [4/4]

template<typename T >
constexpr auto iox2::bb::stl::Optional< T >::value ( const bb::detail::SourceLocation  location = bb::detail::SourceLocation::current()) const & -> const T&
inlineconstexpr

◆ value_or() [1/2]

template<typename T >
template<class U = std::remove_cv_t<T>>
constexpr auto iox2::bb::stl::Optional< T >::value_or ( U &&  fallback) && -> T
inlineconstexpr

◆ value_or() [2/2]

template<typename T >
template<class U = std::remove_cv_t<T>>
constexpr auto iox2::bb::stl::Optional< T >::value_or ( U &&  fallback) const & -> T
inlineconstexpr

Friends And Related Symbol Documentation

◆ operator!= [1/2]

template<typename T >
auto operator!= ( const Optional< T > &  lhs,
NulloptT   
) -> bool
friend

Definition at line 329 of file optional.hpp.

◆ operator!= [2/2]

template<typename T >
auto operator!= ( NulloptT  ,
const Optional< T > &  rhs 
) -> bool
friend

Definition at line 332 of file optional.hpp.

◆ operator== [1/2]

template<typename T >
auto operator== ( const Optional< T > &  lhs,
NulloptT   
) -> bool
friend

Definition at line 323 of file optional.hpp.

◆ operator== [2/2]

template<typename T >
auto operator== ( NulloptT  ,
const Optional< T > &  rhs 
) -> bool
friend

Definition at line 326 of file optional.hpp.


The documentation for this class was generated from the following file: