radial.hpp concepts expected functional string type_traits src/compile_time_checks/serif/backend_independent.cpp src/include/serif/backend/mfem/projection/radial.hpp src/include/serif/utils/projection/projection.hpp serif serif::utils serif::utils::projection serif::utils::projection::detail #pragmaonce #include<concepts> #include<expected> #include<functional> #include<string> #include<type_traits> namespaceserif::utils::projection{ usingRadialValue=std::expected<double,std::string>; template<typenameFunction> conceptRadialFunction=std::invocable<constFunction&,double>&& (std::same_as<std::invoke_result_t<constFunction&,double>,double>|| std::same_as<std::invoke_result_t<constFunction&,double>,RadialValue>); namespacedetail{ template<RadialFunctionFunction> [[nodiscard]]std::function<RadialValue(double)>checked_profile(constFunction&function){ return[&function](constdoubleradius)->RadialValue{ returnstd::invoke(function,radius); }; } } }