Pretty Good Sum Type  1.0.0
Classes | Typedefs | Functions
recursive_wrapper.hpp File Reference

A workaround for the absence of recursive types. More...

#include <pgs/type_traits.hpp>
#include <utility>

Go to the source code of this file.

Classes

struct  pgs::is_recursive_wrapper< T >
 Primary template of a metafunction to classify a type as recursive_wrapper<> or not. More...
 
struct  pgs::is_recursive_wrapper< recursive_wrapper< T > >
 Partial specialization for types that are recursive wrappers. More...
 
struct  pgs::recursive_wrapper_unwrap< T >
 Primary template of a metafunction to compute the type contained by a recursive_wrapper<>. More...
 
struct  pgs::recursive_wrapper_unwrap< recursive_wrapper< T > >
 Partial specialization for types that are recursive wrappers. More...
 
class  pgs::recursive_wrapper< T >
 types More...
 

Typedefs

template<class T >
using pgs::not_is_a_recursive_wrapper = negation< is_recursive_wrapper< T >>
 Negation of the is_recursive_wrapper<> metafunction.
 
template<class W >
using pgs::recursive_wrapper_unwrap_t = typename recursive_wrapper_unwrap< W >::type
 Alias template for the result of recursive_wrapper_unwrap<>.
 
template<class T , class U >
using pgs::is_recursive_wrapper_containing = and_< is_recursive_wrapper< T >, std::is_same< U, recursive_wrapper_unwrap_t< T >> >
 Metafunction to determine if T is a recursive_wrapper<> with underlying type U
 
template<class T , class U >
using pgs::not_is_recursive_wrapper_containing = negation< is_recursive_wrapper_containing< T, U >>
 Negation of the is_recursive_wrapper_containing<> metafunction.
 

Functions

template<class T >
bool pgs::operator== (recursive_wrapper< T > const &lhs, recursive_wrapper< T > const &rhs)
 true if contained values compare equal, false otherwise
 
template<class T >
bool pgs::operator!= (recursive_wrapper< T > const &lhs, recursive_wrapper< T > const &rhs)
 true if contained values compare not equal, false otherwise
 

Detailed Description

A workaround for the absence of recursive types.