SUNphi  1.0
Wrap.hpp File Reference

Header file for the definition of Wrapper. More...

#include <smet/NnarySmET.hpp>
#include <smet/Transpose.hpp>
#include <tens/TensKind.hpp>

Go to the source code of this file.

Classes

struct  SUNphi::BaseWrapper
 
struct  SUNphi::ConstrainAreWrappers< Args >
 
class  SUNphi::Wrapper< _Refs >
 Class to wrap a SmET. More...
 

Typedefs

template<typename T , typename Ret = void>
using SUNphi::EnableIfIsWrapper = EnableIf< isWrapper< T >,Ret >
 
template<typename T >
using SUNphi::ConstrainIsWrapper = ConstrainIsBaseOf< BaseWrapper,T >
 
template<typename T >
using SUNphi::ConstrainIsNotWrapper = ConstrainIsNotBaseOf< BaseWrapper,T >
 

Functions

template<typename... Ts>
Wrapper< Ts... > SUNphi::wrap (Ts &&...smets)
 
void SUNphi::neverInstantiatedFunction ()
 
template<typename D , TypeIf<(isWrapper< D >), void * > = nullptr>
decltype(auto) SUNphi::wrap (D &&smet)
 

Variables

template<typename T >
constexpr bool SUNphi::isWrapper = isBaseOf<BaseWrapper ,T>
 

Detailed Description

Header file for the definition of Wrapper.

Blocks any kind of simplification of the bound SmET: a wrapped smet is not mergeable, vectorizable, and no pattern recognition works on nested smet

Definition in file Wrap.hpp.

Typedef Documentation

template<typename T >
using SUNphi::ConstrainIsNotWrapper = typedef ConstrainIsNotBaseOf<BaseWrapper ,T>

Class forcing T not to inherits from BaseWrapper

Definition at line 19 of file Wrap.hpp.

template<typename T >
using SUNphi::ConstrainIsWrapper = typedef ConstrainIsBaseOf<BaseWrapper ,T>

Class forcing T to inherits from BaseWrapper

Definition at line 19 of file Wrap.hpp.

template<typename T , typename Ret = void>
using SUNphi::EnableIfIsWrapper = typedef EnableIf< isWrapper <T> ,Ret>

Provides the class itself if T is of the given type

Provides the class itself if T satisfies the condition

Definition at line 19 of file Wrap.hpp.

Function Documentation

void SUNphi::neverInstantiatedFunction ( )

Forward definition of a never instantiated expression

template<typename... Ts>
Wrapper<Ts...> SUNphi::wrap ( Ts &&...  smets)

< Name of the NnarySmET to build

Simple Wrapper builder called wrap

Plain Wrapper getting n plain SmET

Parameters
smetsSmETs to act upon

Definition at line 53 of file Wrap.hpp.

template<typename D , TypeIf<(isWrapper< D >), void * > = nullptr>
decltype(auto) SUNphi::wrap ( D &&  smet)

< Type to absorb

Simplify wrap ( Wrapper ) expression

Returns the reference

Parameters
smetNnarySmET to absorb

Definition at line 56 of file Wrap.hpp.

Variable Documentation

template<typename T >
constexpr bool SUNphi::isWrapper = isBaseOf<BaseWrapper ,T>

Expression which is true if T inherits from BaseWrapper

Definition at line 19 of file Wrap.hpp.