The standard says that given a declaration of
inline void foo();
that foo is an inline function with external linkage (becaus
This is aptly answered here by Jonathan Schilling's article: Extern Inlines By Default.
To quote him about motivation for this change:
The immediate motivation for this change was a need of the new template compilation model that was adopted at the same meeting; but more generally it was felt that changing the default was an idea whose time had come, and the change was approved unanimously in both ANSI and ISO.