Prior to C++11, it has always been the case that copy assignment operator should always pass by const reference, like so:
template
ArrayStack&
Prior to C++11, it has always been the case that copy assignment operator should always pass by const reference
That is not true. The best approach has always been to use the copy-and-swap idiom, and that's what you're seeing here (although the implementation in the body is sub-optimal).
If anything, this is less useful in C++11 now that you have a move assignment operator too.