'declaration1' and 'declaration2' have different return types
A specialization of a function template differs from the primary function template in return type. For example:
template<class T> void f(T);
template<> int f(int);
Check all specializations of the function template to make sure the return type is consistent.