Ошибка при работе с контейнерами libCDS

Я пытаюсь освоиться с libCDS. Мне нужна карта, поэтому я решил начать с FeldmanHashMap. Проблема в том, что когда ключ - std:: string при вызове get и последующем применении оператора -> компилятор отображает ошибку

test5: /home/anton/vcpkg/packages/libcds_x64-linux/include/cds/gc/hp.h:1183: cds:: gc:: HP:: guarded_ptr :: value_type* cds:: gc:: HP:: guarded_ptr :: operator -> () const [с GuardedType = cds:: container:: details:: hash_selectorstd:: __ cxx11::basic_string :: node_type; ValueType = std:: pair ; Cast = cds:: container:: details:: guarded_ptr_cast_setcds:: container:: details:: hash_selector :: node_type, std:: pair >; cds:: gc:: HP:: guarded_ptr :: value_type = std:: pair ]: утверждение `!empty()'не выполнено.

Если ключ - int, такой ошибки нет, но при вызове деструктора FeldmanHashMap возникает ошибка сегментации. Укажите, где я ошибаюсь, помогите исправить мой код.

       #include <cds/init.h>
#include <cds/threading/model.h>
#include "cds/container/feldman_hashmap_dhp.h"
#include "cds/gc/hp.h"
#include <iostream>


int main(int argc, char** argv)
{
    cds::Initialize();
    cds::gc::hp::GarbageCollector::construct();
    cds::threading::Manager::attachThread() ;
    cds::container::FeldmanHashMap<cds::gc::HP, std::string, int> testMap;
    std::string key = "111";
    testMap.insert(key, 101);
    auto elem = testMap.get(key);
    std::cout << elem->second << std::endl;
    cds::threading::Manager::detachThread();
    cds::gc::hp::GarbageCollector::Destruct();
    cds::Terminate() ;
}

0 ответов

Другие вопросы по тегам