What does no matching function for call to mean in C++?

Updated October 2026 · How we answer

Short answerIt means the compiler couldn't find a function with a signature that matches the arguments you provided, often due to wrong argument types, missing overloads, or incorrect const/ref qualifiers.

Why it happens

C++ is strict about function signatures. When you call a function, the compiler looks for a function with the same name and parameters that can accept the arguments you passed, either exactly or through implicit conversions.

If no such function exists, you get this error. Common reasons include passing the wrong number of arguments, using a type that can't convert to the parameter type, or calling a non-const member function on a const object.

  • Argument count doesn't match any overload.
  • Argument types don't match and no implicit conversion exists.
  • You're calling a member function on a const object but the function isn't const.
  • The function is declared but not visible (e.g., missing include).
  • You're trying to call a template function without specifying template arguments.

How to fix it

Check the function's declaration and compare it to your call. Make sure the number and types of arguments match. If you need a conversion, cast explicitly.

If the function is a member, ensure the object is not const if the function is non-const. If it's a template, provide the template arguments or ensure they can be deduced.

Also check that the function is declared before the call, either via an include or a forward declaration.

Common mistakes

  • Assuming the function doesn't exist when it's actually just not visible due to missing include.
  • Forgetting that const member functions can't be called on non-const objects? Actually, non-const can call const, but const can't call non-const.
  • Overlooking that implicit conversions might not apply in template argument deduction.
From our shopsCASEONYX: Dark-luxe tough phone cases.