OpenLB 1.8.1
Loading...
Searching...
No Matches
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 576 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 600 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 602 of file meta.h.

602 {
603 return !std::is_same_v<type, void>;
604 }
+ 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 577 of file meta.h.

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

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