identified_equations.hpp array functional tuple utility serif/solver/continuation/parameters.hpp src/compile_time_checks/serif/solver/continuation.cpp src/include/serif/solver/continuation/continuation.hpp serif::solver::continuation::IdentifiedEquations serif serif::solver serif::solver::continuation #pragmaonce #include<array> #include<functional> #include<tuple> #include<utility> #include"serif/solver/continuation/parameters.hpp" namespaceserif::solver::continuation{ template<typenameDefinition,CoordinateValue...Values> structIdentifiedEquationsfinal{ Definitiondefinition; std::tuple<Values...>identity; [[nodiscard]]autocontinuation_identity()const{ returnstd::apply([](constauto&...values){returnstd::array<double,sizeof...(Values)>{coordinate_value(values)...};},identity); } template<typenameModel> requiresstd::invocable<constDefinition&,constModel&> [[nodiscard]]decltype(auto)operator()(constModel&model)const{returnstd::invoke(definition,model);} }; template<typenameDefinition,CoordinateValue...Values> [[nodiscard]]autoidentified_equations(Definitiondefinition,Values...values){ returnIdentifiedEquations<Definition,Values...>{std::move(definition),std::tuple<Values...>{std::move(values)...}}; } }