2013-07-09 3 views
0

У меня есть следующий код:облицовочный проблема при компиляции кода, который использует C++ карту

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» ключа на карте, ошибка исчезает. Означает ли это, что я не могу использовать «const key» на карте? Пожалуйста, помогите мне в этом вопросе

ответ

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 снова.

Смежные вопросы