SUNphi  1.0
BaseSmET.hpp File Reference

Header file defining basic properties of Smart Expression Templates. More...

Go to the source code of this file.

Classes

struct  SUNphi::BaseSmET
 Defines the BaseSmET type traits. More...
 
struct  SUNphi::ConstrainAreSmETs< Args >
 
struct  SUNphi::HasMember_name< Type >
 
struct  SUNphi::HasMember_name< Type >::Fallback
 
struct  SUNphi::HasMember_name< Type >::Derived
 
struct  SUNphi::HasMember_name< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_name< T >
 Class forcing T to have a member "name" defined. More...
 
struct  SUNphi::HasMember_eval< Type >
 
struct  SUNphi::HasMember_eval< Type >::Fallback
 
struct  SUNphi::HasMember_eval< Type >::Derived
 
struct  SUNphi::HasMember_eval< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_eval< T >
 Class forcing T to have a member "eval" defined. More...
 
struct  SUNphi::HasMember_isStoring< Type >
 
struct  SUNphi::HasMember_isStoring< Type >::Fallback
 
struct  SUNphi::HasMember_isStoring< Type >::Derived
 
struct  SUNphi::HasMember_isStoring< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_isStoring< T >
 Class forcing T to have a member "isStoring" defined. More...
 
struct  SUNphi::HasMember_Tk< Type >
 
struct  SUNphi::HasMember_Tk< Type >::Fallback
 
struct  SUNphi::HasMember_Tk< Type >::Derived
 
struct  SUNphi::HasMember_Tk< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_Tk< T >
 Class forcing T to have a member "Tk" defined. More...
 
struct  SUNphi::HasMember_Fund< Type >
 
struct  SUNphi::HasMember_Fund< Type >::Fallback
 
struct  SUNphi::HasMember_Fund< Type >::Derived
 
struct  SUNphi::HasMember_Fund< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_Fund< T >
 Class forcing T to have a member "Fund" defined. More...
 
struct  SUNphi::HasMember_isAliasing< Type >
 
struct  SUNphi::HasMember_isAliasing< Type >::Fallback
 
struct  SUNphi::HasMember_isAliasing< Type >::Derived
 
struct  SUNphi::HasMember_isAliasing< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_isAliasing< T >
 Class forcing T to have a member "isAliasing" defined. More...
 
struct  SUNphi::HasMember_isAssignable< Type >
 
struct  SUNphi::HasMember_isAssignable< Type >::Fallback
 
struct  SUNphi::HasMember_isAssignable< Type >::Derived
 
struct  SUNphi::HasMember_isAssignable< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_isAssignable< T >
 Class forcing T to have a member "isAssignable" defined. More...
 
struct  SUNphi::HasMember_MergeableComps< Type >
 
struct  SUNphi::HasMember_MergeableComps< Type >::Fallback
 
struct  SUNphi::HasMember_MergeableComps< Type >::Derived
 
struct  SUNphi::HasMember_MergeableComps< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_MergeableComps< T >
 Class forcing T to have a member "MergeableComps" defined. More...
 
struct  SUNphi::HasMember_assertMergeableWith< Type >
 
struct  SUNphi::HasMember_assertMergeableWith< Type >::Fallback
 
struct  SUNphi::HasMember_assertMergeableWith< Type >::Derived
 
struct  SUNphi::HasMember_assertMergeableWith< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_assertMergeableWith< T >
 Class forcing T to have a member "assertMergeableWith" defined. More...
 
struct  SUNphi::HasMember_getMergedCompsView< Type >
 
struct  SUNphi::HasMember_getMergedCompsView< Type >::Fallback
 
struct  SUNphi::HasMember_getMergedCompsView< Type >::Derived
 
struct  SUNphi::HasMember_getMergedCompsView< Type >::Check< U, U >
 
struct  SUNphi::ConstrainHasMember_getMergedCompsView< T >
 Class forcing T to have a member "getMergedCompsView" defined. More...
 
struct  SUNphi::SmET< T >
 Smart Expression Templates. More...
 

Macros

#define STATIC_CONSTEXPR(DESCRIPTION, LONG_DESCRIPTION, TYPE, NAME, ...)
 Provides an attribute. More...
 
#define USING(DESCRIPTION, LONG_DESCRIPTION, NAME, ...)
 Provides an attribute. More...
 
#define DEFINE_GETTER_WITH_DEFAULT(NAME, DEFVAL)
 Define a getter of an attibute, with a default. More...
 
#define IS_STORING_ATTRIBUTE(LONG_DESCRIPTION, ...)   STATIC_CONSTEXPR(/*! Returns whether this SmET is storing */,LONG_DESCRIPTION,bool,isStoring,__VA_ARGS__)
 Provides a isStoring attribute.
 
#define STORING   IS_STORING_ATTRIBUTE(/*! This \c SmET is storing */,true)
 Set the SmET to storing.
 
#define NOT_STORING   IS_STORING_ATTRIBUTE(/*! This \c SmET is not storing */,false)
 Set the SmET to not-storing.
 
#define PROVIDE_TK(...)
 Provides the Tk member. More...
 
#define PROVIDE_FUND(...)
 Provides the Fund member. More...
 
#define PROVIDE_IS_ALIASING(LONG_DESCRIPTION, ...)
 Provides a isAliasing method, taking alias as argument. More...
 
#define IS_ALIASING_ACCORDING_TO_POINTER(_p)
 
#define IS_ASSIGNABLE_ATTRIBUTE(LONG_DESCRIPTION, ...)   STATIC_CONSTEXPR(/*! Returns whether this \c SmET can be the left hand of an assignement */,LONG_DESCRIPTION,bool,isAssignable,__VA_ARGS__)
 Provides a isAssignable attribute.
 
#define ASSIGNABLE   IS_ASSIGNABLE_ATTRIBUTE(/*! This \c SmET can be assigned */,true)
 Set the SmET as assignable.
 
#define NOT_ASSIGNABLE   IS_ASSIGNABLE_ATTRIBUTE(/*! This \c SmET cannot be assigned */,false)
 Set the SmET as not-assignable.
 
#define PROVIDE_MERGEABLE_COMPS(LONG_DESCRIPTION, ...)
 
#define NOT_MERGEABLE   PROVIDE_MERGEABLE_COMPS(/*! The class has no mergeable componentes */,IntSeq<>)
 States that the class has no mergeable component.
 
#define PROVIDE_MERGEABLE_COMPS_MARKING_ONE_AS_NON_MERGEABLE(LONG_DESCRIPTION, IN_MERGEABLE_COMPS, POS)
 States that the class has no mergeable component. More...
 
#define PROVIDE_GET_MERGED_COMPS_VIEW(DESCRIPTION, ...)
 Provides a getMergedCompsView method, taking Is as template parameter. More...
 
#define PROVIDE_POS_OF_TCS_IN_RES_TK_AND_MERGED_DELIMS_FOR_REF(ID)
 
#define STATIC_ASSERT_IS_SMET(...)
 
#define PROVIDE_CALL_OPERATOR(QUALIFIER)
 Provide the call operator with a given qualifier. More...
 
#define SMET_GOES_ON_LHS(LHS_FUN, SMET)
 

Typedefs

template<typename T , typename Ret = void>
using SUNphi::EnableIfIsSmET = EnableIf< isSmET< T >,Ret >
 
template<typename T >
using SUNphi::ConstrainIsSmET = ConstrainIsBaseOf< BaseSmET,T >
 
template<typename T >
using SUNphi::ConstrainIsNotSmET = ConstrainIsNotBaseOf< BaseSmET,T >
 
template<typename T , typename = ConstrainIsSmET<T>>
using SUNphi::TkOf = typename RemRef< T >::Tk
 Returns the fundamental type of a class.
 
template<typename T , typename = ConstrainIsSmET<T>>
using SUNphi::FundTypeOf = typename RemRef< T >::Fund
 Returns the fundamental type of a class.
 

Functions

template<typename Type >
constexpr bool SUNphi::hasMember_nameHelper ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_evalHelper ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_isStoringHelper ()
 
template<typename T , auto DefVal = false>
constexpr bool SUNphi::_getisStoring ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_TkHelper ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_FundHelper ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_isAliasingHelper ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_isAssignableHelper ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_MergeableCompsHelper ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_assertMergeableWithHelper ()
 
template<typename Type >
constexpr bool SUNphi::hasMember_getMergedCompsViewHelper ()
 

Variables

template<typename T >
constexpr bool SUNphi::isSmET = isBaseOf<BaseSmET ,T>
 
template<typename Type >
constexpr bool SUNphi::hasMember_name = hasMember_nameHelper<RemRef<Type>>()
 
template<typename Type >
constexpr bool SUNphi::hasMember_eval = hasMember_evalHelper<RemRef<Type>>()
 
template<typename Type >
constexpr bool SUNphi::hasMember_isStoring = hasMember_isStoringHelper<RemRef<Type>>()
 
template<typename T , auto DefVal = false>
constexpr bool SUNphi::isStoring = _getisStoring <T, false >()
 
template<typename Type >
constexpr bool SUNphi::hasMember_Tk = hasMember_TkHelper<RemRef<Type>>()
 
template<typename Type >
constexpr bool SUNphi::hasMember_Fund = hasMember_FundHelper<RemRef<Type>>()
 
template<typename Type >
constexpr bool SUNphi::hasMember_isAliasing = hasMember_isAliasingHelper<RemRef<Type>>()
 
template<typename Type >
constexpr bool SUNphi::hasMember_isAssignable = hasMember_isAssignableHelper<RemRef<Type>>()
 
template<typename Type >
constexpr bool SUNphi::hasMember_MergeableComps = hasMember_MergeableCompsHelper<RemRef<Type>>()
 
template<typename Type >
constexpr bool SUNphi::hasMember_assertMergeableWith = hasMember_assertMergeableWithHelper<RemRef<Type>>()
 
template<typename Type >
constexpr bool SUNphi::hasMember_getMergedCompsView = hasMember_getMergedCompsViewHelper<RemRef<Type>>()
 

Detailed Description

Header file defining basic properties of Smart Expression Templates.

Definition in file BaseSmET.hpp.

Macro Definition Documentation

#define DEFINE_GETTER_WITH_DEFAULT (   NAME,
  DEFVAL 
)
Value:
\ \ \ \
template <typename T, \
auto DefVal=DEFVAL> \
constexpr bool _get ## NAME() \
{ \
if constexpr(isClass<T>) \
if constexpr(hasMember_ ## NAME<T>) \
return RemRef<T>::NAME; \
\
return DefVal; \
} \
\ \ \ \
template <typename T, \
auto DefVal=DEFVAL> \
[[ maybe_unused ]] \
constexpr bool NAME= \
_get ## NAME<T,DEFVAL>()
Tens< Tk, double > T
Tensor class of the expression.
Definition: RelBind.hpp:263

Define a getter of an attibute, with a default.

< Name of the attribute

< Default value

Definition at line 35 of file BaseSmET.hpp.

#define IS_ALIASING_ACCORDING_TO_POINTER (   _p)
Value:
CRASH<<"Broken"; \
\
const void* pAlias= \
static_cast<const void*>(&alias); \
const void* p= \
static_cast<const void*>(_p); \
\
return pAlias==p;)
#define CRASH
Initialize the crasher.
Definition: Crash.hpp:13
#define PROVIDE_IS_ALIASING(LONG_DESCRIPTION,...)
Provides a isAliasing method, taking alias as argument.
Definition: BaseSmET.hpp:127

Set aliasing according to a passed pointer (provided class member)

Todo:
This is mostly broken

Definition at line 138 of file BaseSmET.hpp.

#define PROVIDE_CALL_OPERATOR (   QUALIFIER)
Value:
\
template <typename...Oth> /* Type of the other quantity */ \
DECLAUTO operator()(Oth&&...oth) QUALIFIER \
{ \
if constexpr(0) \
std::cout<<"Using CRTP to cast call operator"<<std::endl; \
\
return \
(~(*this)).eval(forw<Oth>(oth)...); \
}
#define DECLAUTO
Short name for decltype(auto)

Provide the call operator with a given qualifier.

Definition at line 277 of file BaseSmET.hpp.

#define PROVIDE_FUND (   ...)
Value:
using Fund= \
__VA_ARGS__

Provides the Fund member.

Definition at line 108 of file BaseSmET.hpp.

#define PROVIDE_GET_MERGED_COMPS_VIEW (   DESCRIPTION,
  ... 
)
Value:
DESCRIPTION \
template <typename Is> /* IntSeq delimiting the comps groups */ \
DECLAUTO getMergedCompsView() \
const \
{ \
/* Check that we can merge as asked */ \
assertMergeableWith<Is>(); \
\
__VA_ARGS__; \
} \
PROVIDE_ALSO_NON_CONST_METHOD(getMergedCompsView)
#define PROVIDE_ALSO_NON_CONST_METHOD(NAME)
Definition: TypeTraits.hpp:376
#define DECLAUTO
Short name for decltype(auto)

Provides a getMergedCompsView method, taking Is as template parameter.

Definition at line 216 of file BaseSmET.hpp.

#define PROVIDE_IS_ALIASING (   LONG_DESCRIPTION,
  ... 
)
Value:
LONG_DESCRIPTION \
template <typename Tref> \
bool isAliasing(const Tref& alias) const \
{ \
__VA_ARGS__; \
}

Provides a isAliasing method, taking alias as argument.

Definition at line 127 of file BaseSmET.hpp.

#define PROVIDE_MERGEABLE_COMPS (   LONG_DESCRIPTION,
  ... 
)
Value:
USING(,LONG_DESCRIPTION,MergeableComps,__VA_ARGS__); \
\ \
template <typename Is, \
typename=EnableIf<isIntSeq<Is>>> \
static constexpr void assertMergeableWith() \
{ \
static_assert(Unqualified<MergeableComps>::template isSubsetOf<Is>,"Unable to merge this components"); \
} \
\ \
DECLAUTO getMaximallyMergedCompsView() \
{ \
return getMergedCompsView<MergeableComps>(); \
}
#define USING(DESCRIPTION, LONG_DESCRIPTION, NAME,...)
Provides an attribute.
Definition: BaseSmET.hpp:27
#define DECLAUTO
Short name for decltype(auto)

Provide the MergeableComps type, assertMergebaleWith and getMaximallyMergedCompsView

The type must be an ordered IntSeq indicating the splitting point of the TensKind, as in this example:

1 // Maximal splitting
2 Using Tk=
3  TensKind<Spin,Col>
4 PROVIDE_MERGEABLE_COMPS(/*! Description */,IntSeq<0,2>);

Definition at line 179 of file BaseSmET.hpp.

#define PROVIDE_MERGEABLE_COMPS_MARKING_ONE_AS_NON_MERGEABLE (   LONG_DESCRIPTION,
  IN_MERGEABLE_COMPS,
  POS 
)
Value:
PROVIDE_MERGEABLE_COMPS(LONG_DESCRIPTION, \
InsertIntSeqInOrderedIntSeq< \
IntSeq<POS,POS+1>, \
IN_MERGEABLE_COMPS, \
IntSeq<0,0>, \
true>)
#define PROVIDE_MERGEABLE_COMPS(LONG_DESCRIPTION,...)
Definition: BaseSmET.hpp:179

States that the class has no mergeable component.

Definition at line 201 of file BaseSmET.hpp.

#define PROVIDE_POS_OF_TCS_IN_RES_TK_AND_MERGED_DELIMS_FOR_REF (   ID)
Value:
\
using PosOfRef ## ID ## TcsInResTk= \
PosOfTypesNotAsserting<typename Tk::types,typename TK ## ID::types>; \
\ \
using PosOfRef ## ID ## PresTcsInResTk= \
FilterVariadicClassPos<IsPresent,PosOfRef ## ID ## TcsInResTk>; \
\ \
template <typename MD> /* Required merging delimiters */ \
using MergedDelims ## ID= \
IntSeqGetElsAfterAppending<TK ## ID::nTypes,false,MD,PosOfRef ## ID ## TcsInResTk>

Provides the MergedDelim attribute for Refs of a given ID

Todo:
Add some more explenation...

Definition at line 236 of file BaseSmET.hpp.

#define PROVIDE_TK (   ...)
Value:
using Tk= \
__VA_ARGS__
TensKind< Tc1, Tc2 > Tk
TensorKind of the expression.
Definition: RelBind.hpp:259

Provides the Tk member.

Definition at line 94 of file BaseSmET.hpp.

#define SMET_GOES_ON_LHS (   LHS_FUN,
  SMET 
)
Value:
\ \ \ \
template <typename Lhs, /* Type of the lhs \c SmET */ \
typename Rhs, /* Type of the rhs \c SMET */ \
SFINAE_ON_TEMPLATE_ARG(is ## SMET<Rhs>)> /* Enable only for the \c SMET required */ \
void assign(Lhs&& lhs, \
Rhs&& rhs) \
{ \
if(1) \
{ \
using namespace std; \
cout<<"Moving " #SMET "to lhs"<<endl; \
} \
assign(LHS_FUN(forw<Lhs>(lhs)),rhs.ref); \
} \
STL namespace.
void assign(Lhs &&lhs, Rhs &&rhs, DummyTypes...)
Definition: Assign.hpp:138
#define SWALLOW_SEMICOLON_AT_GLOBAL_SCOPE
#define SFINAE_ON_TEMPLATE_ARG(...)
Definition: SFINAE.hpp:24

Defines a simple way to swap an SmET from rhs to lhs

Todo:

why can't we make only const & on rhs?

we need to enforce SmET

< External builder

Definition at line 299 of file BaseSmET.hpp.

#define STATIC_ASSERT_IS_SMET (   ...)
Value:
STATIC_ASSERT_HAS_MEMBER(eval,__VA_ARGS__); \
STATIC_ASSERT_HAS_MEMBER(compSize,__VA_ARGS__); \
STATIC_ASSERT_HAS_MEMBER(isAliasing,__VA_ARGS__); \
STATIC_ASSERT_HAS_MEMBER(isAssignable,__VA_ARGS__); \
STATIC_ASSERT_HAS_MEMBER(isStoring,__VA_ARGS__); \
STATIC_ASSERT_HAS_MEMBER(MergeableComps,__VA_ARGS__); \
STATIC_ASSERT_HAS_MEMBER(assertMergeableWith,__VA_ARGS__); \
STATIC_ASSERT_HAS_MEMBER(getMergedCompsView,__VA_ARGS__); \
STATIC_ASSERT_HAS_MEMBER(Fund,__VA_ARGS__)
TensKind< Tc1, Tc2 > Tk
TensorKind of the expression.
Definition: RelBind.hpp:259
#define STATIC_ASSERT_HAS_MEMBER(TAG,...)
Definition: TypeTraits.hpp:560

Defines the check for a SmET

Todo:

add costRead

add costEval

add isAliasing

Definition at line 257 of file BaseSmET.hpp.

#define STATIC_CONSTEXPR (   DESCRIPTION,
  LONG_DESCRIPTION,
  TYPE,
  NAME,
  ... 
)
Value:
DESCRIPTION \ \
LONG_DESCRIPTION \
static constexpr TYPE NAME= \
__VA_ARGS__

Provides an attribute.

Definition at line 19 of file BaseSmET.hpp.

#define USING (   DESCRIPTION,
  LONG_DESCRIPTION,
  NAME,
  ... 
)
Value:
DESCRIPTION \ \
LONG_DESCRIPTION \
using NAME= \
__VA_ARGS__

Provides an attribute.

Definition at line 27 of file BaseSmET.hpp.

Typedef Documentation

template<typename T >
using SUNphi::ConstrainIsNotSmET = typedef ConstrainIsNotBaseOf<BaseSmET ,T>

Class forcing T not to inherits from BaseSmET

Definition at line 64 of file BaseSmET.hpp.

template<typename T >
using SUNphi::ConstrainIsSmET = typedef ConstrainIsBaseOf<BaseSmET ,T>

Class forcing T to inherits from BaseSmET

Definition at line 64 of file BaseSmET.hpp.

template<typename T , typename Ret = void>
using SUNphi::EnableIfIsSmET = typedef EnableIf< isSmET <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 64 of file BaseSmET.hpp.

Function Documentation

template<typename T , auto DefVal = false>
constexpr bool SUNphi::_getisStoring ( )

Provides a function to get isStoring , or a false if not present

and no external Defval is provided

Internal implentation

Definition at line 89 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_assertMergeableWithHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 213 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_evalHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 70 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_FundHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 113 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_getMergedCompsViewHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 231 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_isAliasingHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 124 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_isAssignableHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 152 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_isStoringHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 75 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_MergeableCompsHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 210 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_nameHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 67 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_TkHelper ( )

Intemediate function to distinguish the non-class case

Definition at line 99 of file BaseSmET.hpp.

Variable Documentation

template<typename Type >
constexpr bool SUNphi::hasMember_assertMergeableWith = hasMember_assertMergeableWithHelper<RemRef<Type>>()

Detect if Type has member (variable or method) assertMergeableWith

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 213 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_eval = hasMember_evalHelper<RemRef<Type>>()

Detect if Type has member (variable or method) eval

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 70 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_Fund = hasMember_FundHelper<RemRef<Type>>()

Detect if Type has member (variable or method) Fund

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 113 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_getMergedCompsView = hasMember_getMergedCompsViewHelper<RemRef<Type>>()

Detect if Type has member (variable or method) getMergedCompsView

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 231 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_isAliasing = hasMember_isAliasingHelper<RemRef<Type>>()

Detect if Type has member (variable or method) isAliasing

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 124 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_isAssignable = hasMember_isAssignableHelper<RemRef<Type>>()

Detect if Type has member (variable or method) isAssignable

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 152 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_isStoring = hasMember_isStoringHelper<RemRef<Type>>()

Detect if Type has member (variable or method) isStoring

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 75 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_MergeableComps = hasMember_MergeableCompsHelper<RemRef<Type>>()

Detect if Type has member (variable or method) MergeableComps

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 210 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_name = hasMember_nameHelper<RemRef<Type>>()

Detect if Type has member (variable or method) name

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 67 of file BaseSmET.hpp.

template<typename Type >
constexpr bool SUNphi::hasMember_Tk = hasMember_TkHelper<RemRef<Type>>()

Detect if Type has member (variable or method) Tk

Uses SFINAE to induce ambiguity in the detection of the member

Definition at line 99 of file BaseSmET.hpp.

template<typename T >
constexpr bool SUNphi::isSmET = isBaseOf<BaseSmET ,T>

Expression which is true if T inherits from BaseSmET

Definition at line 64 of file BaseSmET.hpp.

template<typename T , auto DefVal = false>
constexpr bool SUNphi::isStoring = _getisStoring <T, false >()

Provides a function to get isStoring , or a false if not present

Gives visibility to internal implementation

Definition at line 89 of file BaseSmET.hpp.