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