Compiler Warning (level 2) C4396

"name" : the inline specifier cannot be used when a friend declaration refers to a specialization of a function template

A specialization of a function template cannot specify any of the inline specifiers. The compiler issues warning C4396 and ignores the inline specifier.

To correct this error

  • Remove the inline, __inline, or __forceinline specifier from the friend function declaration.

Example

The following code example shows an invalid friend function declaration with an inline specifier.

// C4396.cpp
// compile with: /W2 /c

class X; 
template<class T> void Func(T t, int i);

class X {
    friend inline void Func<char>(char t, int i);  //C4396
// try the following line instead
//    friend void Func<char>(char t, int i); 
    int i;
};