Why does this work?
I see similar SO questions stating that it does, but could someone explain it in more detail? Particularly, is this behavior protected by a stan
This is covered under the one definition rule:
There can be more than one definition of a class type (Clause 9), enumeration type (7.2), inline function with external linkage (7.1.2), class template (Clause 14), non-static function template (14.5.6), static data member of a class template (14.5.1.3), member function of a class template (14.5.1.1), or template specialization for which some template parameters are not specified (14.7, 14.5.5) in a program provided that each definition appears in a different translation unit, and provided the definitions satisfy the following requirements. Given such an entity named D defined in more than one translation unit, then
There is a whole list of criteria that follow that have to be-adhered to or its undefined behavior. In the above these do hold. Then ...
If the definitions of D satisfy all these requirements, then the program shall behave as if there were a single definition of D.
So technically you can have a copy of the function in each translation unit.
It looks like the wording in the last phrase though makes it a requirement that they all behave the same. This means taking the address of any of these objects should result in the same address.