请参阅下面的代码。我有使用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;
我知道这是一个奇怪的问题,但请帮助澄清一下。
答案 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
。