diff --git a/dumux/experimental/assembly/cclocalassembler.hh b/dumux/experimental/assembly/cclocalassembler.hh index ea58dfcf7dbaa24bbccfd59195c9c39e6023e837..4b82b8e4d4ec4d46310c9e1d1cda153ed1b67fcf 100644 --- a/dumux/experimental/assembly/cclocalassembler.hh +++ b/dumux/experimental/assembly/cclocalassembler.hh @@ -34,15 +34,6 @@ namespace Dumux::Experimental { -#ifndef DOXYGEN -namespace Detail::CC { - -template<class X, class Y> -using Impl = std::conditional_t<!std::is_same_v<X, void>, X, Y>; - -} // end namespace Detail -#endif // DOXYGEN - /*! * \ingroup Assembly * \ingroup CCDiscretization @@ -194,10 +185,10 @@ class CCLocalAssembler; template<class TypeTag, class Assembler, class Implementation> class CCLocalAssembler<TypeTag, Assembler, DiffMethod::numeric, Implementation> : public CCLocalAssemblerBase<TypeTag, Assembler, - Detail::CC::Impl<Implementation, CCLocalAssembler<TypeTag, Assembler, DiffMethod::numeric, Implementation>>> + NonVoidOr<CCLocalAssembler<TypeTag, Assembler, DiffMethod::numeric, Implementation>, Implementation>> { using ThisType = CCLocalAssembler<TypeTag, Assembler, DiffMethod::numeric, Implementation>; - using ParentType = CCLocalAssemblerBase<TypeTag, Assembler, Detail::CC::Impl<Implementation, ThisType>>; + using ParentType = CCLocalAssemblerBase<TypeTag, Assembler, NonVoidOr<ThisType, Implementation>>; using Scalar = GetPropType<TypeTag, Properties::Scalar>; using NumEqVector = Dumux::NumEqVector<GetPropType<TypeTag, Properties::PrimaryVariables>>; using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>; diff --git a/dumux/experimental/assembly/cvfelocalassembler.hh b/dumux/experimental/assembly/cvfelocalassembler.hh index bec9d86816b9f43bfb3d2b2a012ec31a9078cc19..dcb0bb0b5282d52c52763bd092a21716195a2ec5 100644 --- a/dumux/experimental/assembly/cvfelocalassembler.hh +++ b/dumux/experimental/assembly/cvfelocalassembler.hh @@ -37,15 +37,6 @@ namespace Dumux::Experimental { -#ifndef DOXYGEN -namespace Detail::CVFE { - -template<class X, class Y> -using Impl = std::conditional_t<!std::is_same_v<X, void>, X, Y>; - -} // end namespace Detail -#endif // DOXYGEN - /*! * \ingroup Assembly * \ingroup CVFEDiscretization @@ -339,10 +330,10 @@ class CVFELocalAssembler; template<class TypeTag, class Assembler, class Implementation> class CVFELocalAssembler<TypeTag, Assembler, DiffMethod::numeric, Implementation> : public CVFELocalAssemblerBase<TypeTag, Assembler, - Detail::CVFE::Impl<Implementation, CVFELocalAssembler<TypeTag, Assembler, DiffMethod::numeric, Implementation>>> + NonVoidOr<CVFELocalAssembler<TypeTag, Assembler, DiffMethod::numeric, Implementation>, Implementation>> { using ThisType = CVFELocalAssembler<TypeTag, Assembler, DiffMethod::numeric, Implementation>; - using ParentType = CVFELocalAssemblerBase<TypeTag, Assembler, Detail::CVFE::Impl<Implementation, ThisType>>; + using ParentType = CVFELocalAssemblerBase<TypeTag, Assembler, NonVoidOr<ThisType, Implementation>>; using Scalar = GetPropType<TypeTag, Properties::Scalar>; using GridVariables = GetPropType<TypeTag, Properties::GridVariables>; using VolumeVariables = GetPropType<TypeTag, Properties::VolumeVariables>; diff --git a/dumux/experimental/common/typetraits/typetraits.hh b/dumux/experimental/common/typetraits/typetraits.hh index ad1aad6c4b7744b59b93d8f9a7db233ab86ca82b..e9ab11bd8fcc049b423b2cd1d8eec2cc77795c0c 100644 --- a/dumux/experimental/common/typetraits/typetraits.hh +++ b/dumux/experimental/common/typetraits/typetraits.hh @@ -22,6 +22,13 @@ namespace Dumux { inline constexpr auto noop = [] (auto...) {}; using Noop = decltype(noop); +/*! + * \brief Helper template to select type T if it is not void + * or fall back to the given default type otherwise. + */ +template<typename Default, typename T> +using NonVoidOr = std::conditional_t<!std::is_void_v<T>, T, Default>; } // end namespace Dumux + #endif