In 8.4.2 Explicitly-defaulted functions [dcl.fct.def.default]
of the standard,
Explicitly-defaulted functions and implicitly-declared functions are collectively called defaulted functions, and the implementation shall provide implicit definitions for them (12.1 12.4, 12.8), which might mean defining them as deleted. A special member function is user-provided if it is user-declared and not explicitly defaulted or deleted on its first declaration. A user-provided explicitly-defaulted function (i.e., explicitly defaulted after its first declaration) is defined at the point where it is explicitly defaulted; if such a function is implicitly defined as deleted, the program is ill-formed. [ Note: Declaring a function as defaulted after its first declaration can provide efficient execution and concise definition while enabling a stable binary interface to an evolving code base.—end note ]
What does the note at the end mean? From what I can see, declaring a function as defaulted after its first declaration will make the function user-provided, thus make the function non-trivial, and thus either make the type having non-trivial default constructor or make the type non-trivially-copyable, and of course make the type non-trivial and non-POD, while still have the implementation to provide the function's actual definition. But I don't understand how this leads to "provide efficient execution and concise definition while enabling a stable binary interface to an evolving code base
". Any thoughts are welcome and real-world examples are highly appreciated. Thanks.
An example of such type:
struct A {
A();
};
A::A() = default;