Aviso do compilador (nível 2) C4396
"name": o especificador embutido não pode ser usado quando uma declaração friend se refere a uma especialização de um modelo de função
Uma especialização de um modelo de função não pode especificar nenhum dos especificadores embutidos. O compilador emite o aviso C4396 e ignora o especificador embutido.
Para corrigir este erro
- Remova o especificador
inline
,__inline
ou__forceinline
da declaração da função friend.
Exemplo
O exemplo de código a seguir mostra uma declaração de função friend inválida com um especificador inline
.
// 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;
};