私は以下の単純な関数を書いています - 2つのGUIDをキーと値として取る順序のないマップです。しかし、私は彼らがGUIDのcomparerを定義しているとは思えないので、私が試したすべてのGUIDのcomparersでこのエラーがスローされます。GUIDコンプリータエラー!
#include <unordered_map>
#include<iostream>
#include<stdio.h>
#include<Objbase.h>
typedef unordered_map<GUID, GUID, less_guid> Mymap;
Mymap c1;
int __cdecl wmain(int /*argc*/, __in_ecount(argc) WCHAR * /*argv[ ]*/)
{
GUID TargetC;
GUID TargetA;
CoCreateGuid(&TargetC); CoCreateGuid(&TargetA);
c1.insert(Mymap::value_type(TargetC,TargetA));/
getch();
return 0;
}
これは、アップを示したエラーです: 「> C:エラーC2064:マイクロソフトのVisual Studio 10.0 \ VCの\ \ \プログラムファイル(x86の)は\ xhash(154)を含み用語は評価されません1つの引数を取る関数 1>クラスは、適切な数の引数をとる関数へのポインタまたは関数への参照への 'operator()'またはユーザー定義の変換演算子を定義しません。 "
I '解決策が必要です。あなたのご意見に感謝します。ありがとう!
template<class Key,
class T,
class Hash = hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<std::pair<const Key, T> > >
class unordered_map;
あなたはless_guid
を渡している、第三テンプレートパラメータとして、比較関数のように聞こえる: