Compiler Error C2244
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C2244.
identifier' : unable to match function definition to an existing declaration
An unusual use of the unary + operator was used in front of a function call that did not have parenthesis.
This error only occurs in C++ projects.
The following sample generates C2244:
// C2244.cpp
int func(char) {
return 0;
}
int func(int) {
return 0;
}
int main() {
+func; // C2244
}
C2244 can also occur when an incorrect function signature is used for a member function of a class template.
// C2244b.cpp
// compile with: /c
template<class T>
class XYZ {
void func(T t);
};
template<class T>
void XYZ<T>::func(int i) {} // C2244 wrong function signature
// try the following line instead
// void XYZ<T>::func(T t) {}
C2244 can also occur when an incorrect function signature is used for a member function template.
// C2244c.cpp
// compile with: /c
class ABC {
template<class T>
void func(int i, T t);
};
template<class T>
void ABC::func(int i) {} // C2244 wrong signature
// try the following line instead
// void ABC::func(int i, T t) {}
You cannot partially specialize a function template.
// C2244d.cpp
template<class T, class U>
class QRS {
void func(T t, U u);
};
template<class T>
void QRS<T,int>::func(T t, int u) {} // C2244
Show: