OpenLB 1.7
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | List of all members
olb::meta::derived_type_in_nested< BASE, HEAD, TAIL > Struct Template Reference

#include <meta.h>

+ Collaboration diagram for olb::meta::derived_type_in_nested< BASE, HEAD, TAIL >:

Public Types

using type = typename decltype(evaluate_type())::type
 

Static Public Member Functions

auto static constexpr evaluate_type ()
 
static constexpr bool contains ()
 

Detailed Description

template<typename BASE, typename HEAD = void, typename ... TAIL>
struct olb::meta::derived_type_in_nested< BASE, HEAD, TAIL >

Definition at line 572 of file meta.h.

Member Typedef Documentation

◆ type

template<typename BASE , typename HEAD = void, typename ... TAIL>
using olb::meta::derived_type_in_nested< BASE, HEAD, TAIL >::type = typename decltype(evaluate_type())::type

Definition at line 596 of file meta.h.

Member Function Documentation

◆ contains()

template<typename BASE , typename HEAD = void, typename ... TAIL>
static constexpr bool olb::meta::derived_type_in_nested< BASE, HEAD, TAIL >::contains ( )
inlinestaticconstexpr

Definition at line 598 of file meta.h.

598 {
599 return !std::is_same_v<type, void>;
600 }
+ Here is the caller graph for this function:

◆ evaluate_type()

template<typename BASE , typename HEAD = void, typename ... TAIL>
auto static constexpr olb::meta::derived_type_in_nested< BASE, HEAD, TAIL >::evaluate_type ( )
inlinestaticconstexpr

Definition at line 573 of file meta.h.

573 {
574 if constexpr (!sizeof...(TAIL)) {
575 if constexpr (std::is_same<HEAD,void>::value) {
576 return id<BASE>{}; //Fallback
577 } else {
578 if constexpr(std::is_same<BASE,void>::value){
579 return id<void>{};
580 } else {
581 using HEAD_EVAL = typename BASE::template derivedField<HEAD>;
582 return id<HEAD_EVAL>{};
583 }
584 }
585 } else {
586 if constexpr(std::is_same<BASE,void>::value){
587 return id<void>{};
588 } else {
589 using HEAD_EVAL = typename BASE::template derivedField<HEAD>;
590 return id<typename derived_type_in_nested<HEAD_EVAL,TAIL...>::type>{};
591 }
592 }
593 __builtin_unreachable();
594 }
typename decltype(evaluate_type())::type type
Definition meta.h:596

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