Consider following source files 1.cpp
#include using namespace std; struct X { X() { cout << \"1\" << endl;
It is undefined behaviour (with no required diagnostic) if inlined functions (such as your class constructor) have different definitions in different translation units.