Of course, the level (depth) of recursion (call nesting) can be represented by a template parameter, the value of which is incremented for each call. This is already done in our template. What has been meant is not this, but in general a normal, local or global variable the value of which can be changed. Only then the above described use case can be realised. Because without this (or at least a loop variable, as you have indicated) it is not possible to have a template which calls different other ‘leaf’ templates that are recursive and, at the same time, recognize when the ‘leaf’ template is called the first time within the top-level template. So if you have a template calling itself recursively and at the end of the call chain another ‘leaf’ template, you need a normal variable to flag, to signal to the ‘leaf’ template its initial invocation (as uaual, its value will be changed once the inital invocation is recognized). Is this explanation understandable?