在编译使用C ++映射的代码时遇到问题

时间:2013-07-09 05:27:19

标签: c++ map stl

我有以下代码:

std::map<
    const CosTransactions::otid_t,
     std::pair<
        CosTransactions::otid_t,
        CosTransactions::Coordinator_ptr>,
    otid_t_less> XID_Broker_impl::cache;

编译上面的代码时,我收到如下错误:

D:/Y24\usr\include/xmemory", line 144: error(483): function
          "std::allocator<_Ty>::address(std::_Allocator_base<_Ty>::value_type
          &) const [with _Ty=const CosTransactions::otid_t]" has already been
          declared
          detected during:
            instantiation of class

我使用的是HP-Nonstop C ++编译器?当我删除地图中键的“常量”时,错误消失了。这是否意味着我不能在地图中使用“const key”? 请帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

从C ++11§23.3.1类模板映射

For a map<Key,T> the key_type is Key and the value_type is pair <const Key,T>

请注意,根据定义,密钥类型为const,这意味着您不应再次将密钥类型声明为const