23 #include <antares/expressions/nodes/FunctionNode.h>
24 #include <antares/expressions/visitors/NodeVisitor.h>
26 namespace Antares::Expressions::Visitors
30 concept HasSizeMethod = requires(
const T& t) {
31 { t.size() } -> std::convertible_to<std::size_t>;
34 template<HasSizeMethod T>
35 std::size_t getMaxSize(
const std::vector<T>& elements)
37 std::size_t maxSize = 0;
38 for (
const auto& element: elements)
40 maxSize = std::max(maxSize, element.size());
46 std::vector<R> variadicFunction(NodeVisitor<R>& visitor,
const Nodes::FunctionNode* node)
48 const auto& operands = node->getOperands();
49 std::vector<R> result;
50 result.reserve(operands.size());
51 for (
const auto* operand: operands)
53 result.push_back(visitor.dispatch(operand));