ヘッダーファイルではなく、CPPファイルに以下のコード(テンプレートの特殊化用)を入れなければならないことがわかりましたか?ヘッダーファイルに書き込む方法はありますか?ヘッダーファイルのテンプレートの特殊化
template<> inline UINT AFXAPI HashKey<const error_code &> (const error_code & e)
{
// Hash code method required for MFC CMap.
// This hash code generation method is picked from Joshua Bloch's
// Effective Java.
unsigned __int64 result = 17;
result = 37 * result + e.hi;
result = 37 * result + e.lo;
return static_cast<UINT>(result);
}
上記の機能がerror_code.h
エラーC2912に配置されている場合、私はエラーを取得します:明示的な特殊。 「UINTハッシュキー(のconst ERROR_CODE &)は」私は上記のテンプレートの特殊化を行う必要がある理由についていくつかの参照元関数テンプレート
の専門 ではありません。 http://www.codeproject.com/KB/architecture/cmap_howto.aspx。以下のコードは記事から選択され、MFCのソースコードの一部です。
// inside <afxtemp.h>
template<class ARG_KEY>
AFX_INLINE UINT AFXAPI HashKey(ARG_KEY key)
{
// default identity hash - works for most primitive values
return (DWORD)(((DWORD_PTR)key)>>4);
}
さて、特化していないバージョンは何ですか? – GManNickG