names.hpp string_view nameof.hpp src/include/serif/discretization/blocks/fields.hpp src/include/serif/discretization/forms/forms.hpp serif serif::meta #pragmaonce #include<string_view> #include"nameof.hpp" /*IfweevermovetoC++26orabovewecanreplacethesewithnativereflection */ namespaceserif::meta{ template<typenameT> [[nodiscard]]constevalstd::string_viewtype_name()noexcept{ returnnameof::nameof_short_type<T>(); } template<typenameT> [[nodiscard]]constevalstd::string_viewtemplate_name()noexcept{ constexprstd::string_viewtypeName=type_name<T>(); constexprstd::size_ttemplateStart=typeName.find('<'); ifconstexpr(templateStart==std::string_view::npos){ returntypeName; } returntypeName.substr(0,templateStart); } }