From 41b31fa3a99bab87f065fb2b34fee018330b2814 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Fri, 11 Feb 2022 16:03:31 +0100 Subject: [PATCH] WIP: Try IrElementObjects (for IrElementObjects<T1, t2, ...>) --- src/Lib/Script/Ast/IrElement.hh | 3 +++ src/Lib/Script/Ast/IrExpression.hh | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Lib/Script/Ast/IrElement.hh b/src/Lib/Script/Ast/IrElement.hh index 5ee9aa8e..00503dcf 100644 --- a/src/Lib/Script/Ast/IrElement.hh +++ b/src/Lib/Script/Ast/IrElement.hh @@ -68,6 +68,9 @@ class IrElement; template <typename T> concept IrElementObject = std::is_base_of<IrElement, T>::value; +template <typename... T> +concept IrElementObjects = std::conjunction<std::is_base_of<IrElement, T>...>::value; + /* ** IrElementConstructible object. Used to create an element from ** the passed arguments (`typename... Args`). diff --git a/src/Lib/Script/Ast/IrExpression.hh b/src/Lib/Script/Ast/IrExpression.hh index 2de5505a..b0777d28 100644 --- a/src/Lib/Script/Ast/IrExpression.hh +++ b/src/Lib/Script/Ast/IrExpression.hh @@ -135,7 +135,7 @@ class IrEVariableRef : public IrExpression { IrEVariableRef(IrVariable *, std::vector<IrExpression*>&&); template<typename... Args> - IrEVariableRef(IrVariable *var, Args...&&indicies) + IrEVariableRef(IrVariable *var, Args&&...indicies) : IrEVariableRef(var, std::vector<IrExpression*>{indicies...}) { } -- GitLab