Lumiera  0.pre.03
»edit your freedom«
Strip< X > Struct Template Reference

#include "lib/meta/trait.hpp"

Description

template<typename X>
struct lib::meta::Strip< X >

Helper for type analysis: tries to strip all kinds of type adornments.

Definition at line 250 of file trait.hpp.

Public Types

using Type = typename Unwrap< TypePlain >::Type
 
using TypePlain = remove_cv_t< TypePointee >
 
using TypePointee = remove_pointer_t< TypeReferred >
 
using TypeReferred = remove_reference_t< TypeUnconst >
 
using TypeUnconst = conditional_t< is_reference_v< X >, conditional_t< is_rvalue_reference_v< X >, remove_cv_t< remove_reference_t< X > > &&, remove_cv_t< remove_reference_t< X > > &>, remove_cv_t< X > >
 

Member Typedef Documentation

◆ TypeUnconst

using TypeUnconst = conditional_t<is_reference_v<X> , conditional_t<is_rvalue_reference_v<X> , remove_cv_t<remove_reference_t<X> > && , remove_cv_t<remove_reference_t<X> > & > , remove_cv_t<X> >

Definition at line 256 of file trait.hpp.

◆ TypeReferred

using TypeReferred = remove_reference_t<TypeUnconst>

Definition at line 257 of file trait.hpp.

◆ TypePointee

using TypePointee = remove_pointer_t<TypeReferred>

Definition at line 258 of file trait.hpp.

◆ TypePlain

using TypePlain = remove_cv_t<TypePointee>

Definition at line 259 of file trait.hpp.

◆ Type

using Type = typename Unwrap<TypePlain>::Type

Definition at line 261 of file trait.hpp.

+ Inheritance diagram for Strip< X >:
+ Collaboration diagram for Strip< X >:

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