1

以下のコードを参照してください。const テンプレート型を使用しています。最初の行はコンパイルされますが、他の 2 行はコンパイルされません。なぜこれら2つはコンパイルされないのですか? そして、コンパイルする最初のもの-それを書いてもいいですか? std::map<const int, const bool>との違いは何std::map<int, bool>ですか?

std::map<const int, const bool> mm;
std::map<const int&, const bool> mm;
std::map<const int, const bool&> mm;

これが奇妙な質問であることは承知していますが、明確にするのを手伝ってください。

4

1 に答える 1

2

なぜ値するのconstですか?map::value_typeは本当にstd::pair<const Key, Value>。コンテナに参照を格納することはできませんany

標準からの要件の 1 つ。

T& operator[](const key_type& x);

必須:である必要key_typeCopyInsertableあり、mapped_type はDefaultInsertable*this にある必要があります。

しかし、そうでconst referenceはありませんCopyInsertable

于 2013-04-17T12:57:42.013 に答える