Scott Meyer states in *Effective C++: Item 30: Understand the ins and outs of inlining* that constructors and destructors are often worse candidates for inlining.

Defining functions inside a class definition, requests (not commands) them implicitly to be inline. Depending on the quality of your compiler, the compiler decides whether or not (explicitly or implicitly) defined functions be actually inlined or not.

Taking all these into account, is it a better practice to explicitly define empty/copy/move constructors, copy/move assignment operators and destructors as default (i.e. with the `default` keyword) inside the body files than inside the header files? After all, `default` deals purely with implementation as opposed to the dual `delete`?