diff --git a/src/Lib/Script/Ast/IrElement.hh b/src/Lib/Script/Ast/IrElement.hh
index 5ee9aa8e41cab9e6ea7e40b82391c9c2f7edfd7b..00503dcf7aec2fab5638ad7d6c28fd27b8ff3ec2 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 2de5505aedb32cce7f2a60c0bf391a0297fa820d..b0777d284dd64ebaeb6db6b65f65119d5a082071 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...})
     {
     }