Compiler Warning (level 1) C4667


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at Compiler Warning (level 1) C4667.

function' : no function template defined that matches forced instantiation

You cannot instantiate a function template that has not been declared.

The following sample will cause C4667:

// C4667a.cpp  
// compile with: /LD /W1  
void max(const int &, const int &); // C4667 expected  

To avoid this warning, first declare the function template:

// C4667b.cpp  
// compile with: /LD  
// Declare the function template  
template<typename T>  
const T &max(const T &a, const T &b) {  
   return (a > b) ? a : b;  
// Then forcibly instantiate it with a desired type ... i.e. 'int'  
const int &max(const int &, const int &);