1

请看下面的代码。我在那里使用了 const 模板类型。第一行编译,其他两行不编译。为什么这两个不编译?第一个编译的 - 可以写吗?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容器中。

标准要求之一。

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

要求:key_typeshall be CopyInsertableand mapped_type shall be DefaultInsertableinto *this。

但是,const reference不是CopyInsertable

于 2013-04-17T12:57:42.013 回答