There can be more than one definition of a class type (_
class_), enu- meration type (_
dcl.enum_), inline function with external linkage (_
dcl.fct.spec_), class template (_
temp_), non-static function tem- plate (_
temp.fct_), static data member of a class template (_
temp.static_), member function template (_
temp.mem.func_), or tem- plate specialization for which some template parameters are not speci- fied (_
temp.spec_, _
temp.class.spec_) in a program provided that each definition appears in a different translation unit, and provided the definitions satisfy the following requirements.