In C++, if a nonstatic class member function is passed as an argument, the argument is converted to a pointer to member.
Passing a class object by value is actually passed by reference if the class has a destructor or the class has a copy constructor that does more than a bitwise copy.
It is an error when a function argument is a class object and all of the following properties hold:
Examples of Calling Functions
and Passing Arguments
Copy Constructor
Passing Arguments by Reference
Constructors and Destructors
Overview
Member Functions
Type Specifiers