No, this is not a copy constructor. Section 12.8 ( [class.copy] ) of the Standard requires that:
A constructor without a template for class X is a copy constructor if its first parameter is of type X& , const X& , volatile X& or const volatile X& , and either there are no other parameters, or all other parameters have default arguments.
The compiler will still implicitly generate a default.
You can make this explicit (C ++ 11 required) on
Foo(const Foo<T>&) = default;
Ben voigt
source share