Block-Structured AMR Software Framework
AMReX_FabDataType.H
Go to the documentation of this file.
1 #ifndef AMREX_FAB_DATA_TYPE_H_
2 #define AMREX_FAB_DATA_TYPE_H_
3 #include <AMReX_Config.H>
4 
5 #include <AMReX_TypeTraits.H>
6 
7 namespace amrex {
8 
9 template <typename T, class Enable = void> struct FabDataType {};
10 //
11 template <typename T>
12 struct FabDataType <T, std::enable_if_t<IsMultiFabLike_v<T> > >
13 {
14  using fab_type = typename T::fab_type;
15  using value_type = typename T::value_type;
16 };
17 
18 template <typename T>
19 struct FabDataType <T, std::enable_if_t<IsMultiFabLike_v<typename T::value_type> > >
20 {
21  using fab_type = typename T::value_type::fab_type;
22  using value_type = typename T::value_type::value_type;
23 };
24 
25 }
26 
27 #endif
Definition: AMReX_Amr.cpp:49
typename T::fab_type fab_type
Definition: AMReX_FabDataType.H:14
typename T::value_type value_type
Definition: AMReX_FabDataType.H:15
typename T::value_type::value_type value_type
Definition: AMReX_FabDataType.H:22
typename T::value_type::fab_type fab_type
Definition: AMReX_FabDataType.H:21
Definition: AMReX_FabDataType.H:9