Yes, when the Big Three need to be non-inline. When the compiler synthesizes the Big Three, it makes them inline. If the application's classes are exposed to customers (for example, if customers #include the application's header files rather than merely using an executable), the application's inline code is copied into their executables. If you want to maintain binary compatibility between releases of your library, you must not change any visible inline functions, including the versions of the Big Three that are synthesized by the compiler. Therefore, explicit, non-inline versions of the Big Three should be used. |