std :: map with const模板和const参考模板参数

时间:2013-04-17 12:52:08

标签: c++ templates compilation

请参阅下面的代码。我有使用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;

我知道这是一个奇怪的问题,但请帮助澄清一下。

1 个答案:

答案 0 :(得分:2)

为什么const有价值? map::value_type真的是std::pair<const Key, Value>。 您无法在any内容中存储引用。

标准要求之一。

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

要求:key_type应为CopyInsertable且mapped_type应为DefaultInsertable *此。

但是,const reference不是CopyInsertable