diff --git a/src/language/CFunctionEmbedder.hpp b/src/language/CFunctionEmbedder.hpp index 5aa9fdf26a58b3dbda3bdc61b47c2826d297c0d5..37852636bd2ef4c2ff13eed800af7aaec8ed7c81 100644 --- a/src/language/CFunctionEmbedder.hpp +++ b/src/language/CFunctionEmbedder.hpp @@ -12,6 +12,8 @@ struct ICFunctionEmbedder { virtual void apply(const std::vector<ASTNodeDataVariant>& x, double& f_x) = 0; + + virtual ~ICFunctionEmbedder() = default; }; template <typename FX, typename... Args> @@ -41,6 +43,7 @@ class CFunctionEmbedder : public ICFunctionEmbedder PUGS_INLINE void _copy_from_vector(ArgsTuple& t, const std::vector<ASTNodeDataVariant>& v, std::index_sequence<I...>) const { + Assert(sizeof...(Args) == v.size()); (_copy_value<I>(t, v), ...); } diff --git a/src/language/node_processor/CFunctionProcessor.hpp b/src/language/node_processor/CFunctionProcessor.hpp index 4bbda59f92461bdcefe1ebe111297c674e268216..15c56da8133f5bf1bdac5cc984b5a0fed03fb6cb 100644 --- a/src/language/node_processor/CFunctionProcessor.hpp +++ b/src/language/node_processor/CFunctionProcessor.hpp @@ -58,8 +58,8 @@ class CFunctionExpressionProcessor final : public INodeProcessor CFunctionExpressionProcessor(ASTNode& node, std::vector<ASTNodeDataVariant>& argument_values) : m_node{node}, m_argument_values{argument_values} { - m_embedded_function = std::make_unique<CFunctionEmbedder<double, double, double>>( - std::function{[](double x, double y) -> double { return std::sin(x) * std::cos(3 * x) + y; }}); + m_embedded_function = std::make_unique<CFunctionEmbedder<double, double>>( + std::function{[](double x) -> double { return std::sin(x); }}); } };