runtime.hpp string_view format serif/discretization/blocks/runtime.hpp serif/discretization/forms/concept.hpp src/compile_time_checks/serif/discretization/fields_meanfield.cpp src/compile_time_checks/serif/discretization/forms/forms.cpp src/include/serif/discretization/quadrature/query.hpp src/include/serif/discretization/quadrature/rules.hpp serif::discretization::forms::FormDescriptor std::formatter< serif::discretization::forms::FormDescriptor > serif serif::discretization serif::discretization::forms file defining some utilities to project form information from compile time into runtime Emily M. Boudreaux #pragmaonce #include<string_view> #include<format> #include"serif/discretization/blocks/runtime.hpp" #include"serif/discretization/forms/concept.hpp" namespaceserif::discretization::forms{ structFormDescriptorfinal{ std::string_viewname; blocks::TermDescriptortrial; blocks::TermDescriptortest; [[nodiscard]]friendconstexprbooloperator==(constFormDescriptor&,constFormDescriptor&)noexcept=default; }; template<FormFormT> inlineconstexprFormDescriptorform_descriptor{ .name=FormT::name, .trial=blocks::term_descriptor<typename FormT::trial_type>, .test=blocks::term_descriptor<typename FormT::test_type> }; } template<> structstd::formatter<serif::discretization::forms::FormDescriptor>:std::formatter<std::string>{ template<typenameFormatContext> autoformat(constserif::discretization::forms::FormDescriptor&fd,FormatContext&ctx)const{ returnstd::formatter<std::string>::format(std::format("FormDescriptor(name={},trial={},test={})",fd.name,fd.trial,fd.test),ctx); } };