operator[]
新しいC++unordered_mapに問題があります。キーでを使用したいのですがconst
、拒否されます。
コード全体を提供することはできませんが、次のように問題を単純化することはできます。
#include <unordered_map>
class A {
public:
A();
};
class B {
public:
B();
};
int main(int argc, char **argv) {
std::unordered_map<A &, B> myMap;
A a;
const A &ar = a;
B b;
myMap[ar] = b;
}
コンパイラの出力は少し長いですが、次で終わります。
/usr/include/c++/4.6/bits/hashtable_policy.h:537:5: note: no known conversion for argument 1 from ‘const A’ to ‘A&’
const A &
私のコードでは、いくつかのメソッドがそれをそのまま私に与えるので、私はを使用します。そして、ちなみに、キーはconstである必要があります。代わりに試しましたstd::unordered_map<const A &, B> myMap;
が、どちらも機能しません。
フラグ付きのgccバージョン4.6.3(Ubuntu / Linaro 4.6.3-1ubuntu5)を使用してい-std=c++0x
ます。
なぜ禁止されているのか教えてください。私はその理由がわからないと言わなければなりません。
どうもありがとう(そして質問がばかげているなら失礼します...)。