Is this an old C++ style constructor?
The statement:
T(i);
is equivalent to:
T i;
In other words, it declares a variable named i
with type T
. This is because parentheses are allowed in declarations in some places (in order to change the binding of declarators) and since this statement can be parsed as a declaration, it is a declaration (even though it might make more sense as an expression).