$12.8/2 - \'A non-template constructor for class X is a copy constructor if its first parameter is of type X&, const X&, volatile X& or const
The BDE allocator [PDF Link] used this quirk. For example their array allocator looked like this:
template class bde::Array { public: Array(bde::Allocator *allocator = 0); Array(const Array &rhs, bde::Allocator *allocator = 0); };