diff --git a/alib2cli/src/parser/AltVisitor.h b/alib2cli/src/parser/AltVisitor.h
index a7532536ed0e169733803c97eca2e7e816e10817..7490a920562dd4e837d14a7f07b30118651b4998 100644
--- a/alib2cli/src/parser/AltVisitor.h
+++ b/alib2cli/src/parser/AltVisitor.h
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <concepts>
 #include <source_location>
 
 #include <ext/algorithm>
@@ -245,7 +246,7 @@ private:
         return std::unique_ptr<T>(cast<T*>(val, location));
     }
 
-    template <typename Base, typename T, class... Args>
+    template <typename Base, std::derived_from<Base> T, class... Args>
     Base* retPtr(Args&&... args)
     {
         return new T(std::forward<Args>(args)...);