OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
Public Member Functions | Private Attributes | List of all members
client::ast::recursive_wrapper< T > Class Template Reference

#include <ast.hpp>

Public Member Functions

 recursive_wrapper ()
 
 recursive_wrapper (T const &value)
 
 recursive_wrapper (T &&value)
 
 recursive_wrapper (recursive_wrapper const &other)
 
 recursive_wrapper (recursive_wrapper &&) noexcept=default
 
recursive_wrapper & operator= (recursive_wrapper const &other)
 
recursive_wrapper & operator= (recursive_wrapper &&) noexcept=default
 
recursive_wrapper & operator= (T const &value)
 
recursive_wrapper & operator= (T &&value)
 
T & get ()
 
T const & get () const
 
 operator T& ()
 
 operator T const & () const
 

Private Attributes

std::unique_ptr< T > ptr_
 

Detailed Description

template<typename T>
class client::ast::recursive_wrapper< T >

Local, C++20 replacement for boost::recursive_wrapper. Holds a heap-allocated T so that recursive/incomplete types can be stored as an alternative of a std::variant.

Definition at line 34 of file ast.hpp.

Constructor & Destructor Documentation

◆ recursive_wrapper() [1/5]

template<typename T >
client::ast::recursive_wrapper< T >::recursive_wrapper ( )
inline

Definition at line 37 of file ast.hpp.

◆ recursive_wrapper() [2/5]

template<typename T >
client::ast::recursive_wrapper< T >::recursive_wrapper ( T const &  value)
inline

Definition at line 38 of file ast.hpp.

◆ recursive_wrapper() [3/5]

template<typename T >
client::ast::recursive_wrapper< T >::recursive_wrapper ( T &&  value)
inline

Definition at line 39 of file ast.hpp.

◆ recursive_wrapper() [4/5]

template<typename T >
client::ast::recursive_wrapper< T >::recursive_wrapper ( recursive_wrapper< T > const &  other)
inline

Definition at line 41 of file ast.hpp.

◆ recursive_wrapper() [5/5]

template<typename T >
client::ast::recursive_wrapper< T >::recursive_wrapper ( recursive_wrapper< T > &&  )
defaultnoexcept

Member Function Documentation

◆ get() [1/2]

template<typename T >
T & client::ast::recursive_wrapper< T >::get ( )
inline

Definition at line 55 of file ast.hpp.

References client::ast::recursive_wrapper< T >::ptr_.

◆ get() [2/2]

template<typename T >
T const & client::ast::recursive_wrapper< T >::get ( ) const
inline

Definition at line 56 of file ast.hpp.

References client::ast::recursive_wrapper< T >::ptr_.

◆ operator T const &()

template<typename T >
client::ast::recursive_wrapper< T >::operator T const & ( ) const
inlineexplicit

Definition at line 59 of file ast.hpp.

References client::ast::recursive_wrapper< T >::ptr_.

◆ operator T&()

template<typename T >
client::ast::recursive_wrapper< T >::operator T& ( )
inlineexplicit

Definition at line 58 of file ast.hpp.

References client::ast::recursive_wrapper< T >::ptr_.

◆ operator=() [1/4]

template<typename T >
recursive_wrapper & client::ast::recursive_wrapper< T >::operator= ( recursive_wrapper< T > &&  )
defaultnoexcept

◆ operator=() [2/4]

template<typename T >
recursive_wrapper & client::ast::recursive_wrapper< T >::operator= ( recursive_wrapper< T > const &  other)
inline

Definition at line 44 of file ast.hpp.

References client::ast::recursive_wrapper< T >::ptr_.

◆ operator=() [3/4]

template<typename T >
recursive_wrapper & client::ast::recursive_wrapper< T >::operator= ( T &&  value)
inline

Definition at line 53 of file ast.hpp.

References client::ast::recursive_wrapper< T >::ptr_.

◆ operator=() [4/4]

template<typename T >
recursive_wrapper & client::ast::recursive_wrapper< T >::operator= ( T const &  value)
inline

Definition at line 52 of file ast.hpp.

References client::ast::recursive_wrapper< T >::ptr_.

Member Data Documentation

◆ ptr_

template<typename T >
std::unique_ptr<T> client::ast::recursive_wrapper< T >::ptr_
private

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