Rule M3-2-3 (required, implementation, automated)

A type, object or function that is used in multiple translation units shall be declared in one and only one file. See MISRA C++ 2008 [7]