Rule M3-9-1 (required, implementation, automated)

The types used for an object, a function return type, or a function parameter shall be token-for-token identical in all declarations and re-declarations. See MISRA C++ 2008 [7]