traits.hpp type_traits serif/discretization/blocks/concepts.hpp src/compile_time_checks/serif/discretization/blocks/fields.cpp src/include/serif/backend/mfem/discretization/quadrature/order.hpp src/include/serif/backend/mfem/discretization/term_binding.hpp src/include/serif/backend/mfem/solver/continuation/detail/physical_transfer.hpp src/include/serif/discretization/blocks/blocks.hpp src/include/serif/discretization/forms/value.hpp src/include/serif/equations/contributions.hpp src/include/serif/geometry/surface/detail/automatic_relations.hpp src/include/serif/operators/concepts.hpp serif::discretization::blocks::SpatialTermTraits serif serif::discretization serif::discretization::blocks Compile-time traits for fields and terms, used to extract types and properties from template parameters. Emily M. Boudreaux #pragmaonce #include<type_traits> #include"serif/discretization/blocks/concepts.hpp" namespaceserif::discretization::blocks{ template<HasFunctionalSpaceTermT> usingFunctionalSpaceOf=std::remove_cvref_t<TermT>::FunctionalSpace; template<HasSupportTermT> usingSupportOf=std::remove_cvref_t<TermT>::Support; template<HasQuantityTermT> usingQuantityOf=std::remove_cvref_t<TermT>::Quantity; template<SpatialTermTermT> structSpatialTermTraits{ usingFunctionalSpace=TermT::FunctionalSpace; usingSupport=TermT::Support; staticconstexprautofamily=FunctionalSpace::functional_space.family; staticconstexprintorder=FunctionalSpace::order; staticconstexprstd::size_trank=FunctionalSpace::rank::value; }; template<typenameTermT> conceptScalarTraceTerm=GlobalScalarTerm<TermT>||(SpatialTerm<TermT>&&SpatialTermTraits<TermT>::rank==0&&SpatialTermTraits<TermT>::family==functional_space::Family::h1); }