Consider the class
template <typename T>
struct Foo {
Foo(const Foo<T>& other) {}
};
For the constructor argument type, is const Foo<T>& and const Foo& the same in this context? I always assumed not, thinking that the latter can be called for Foo<int> f = Foo<float>(), and the former cannot. But now I'm not sure if that is so.