The copy assignment operator is never a function template. Since the class doesn't declare a copy assignment operator the compiler generates one and uses this generated operator. If you add an operator like this, you'll see the assignment:
myclass<T>& operator= (myclass<T> const& rhs) {
std::cout << "(copy) " << data << " = " << rhs.data << '\n';
return *this;
}