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...}) { }