可以使用整数键增强映射吗?

时间:2012-06-25 12:03:30

标签: c++ boost boost-interprocess

我使用如下定义来提升地图:

typedef std::pair< int,complex_data > map_value_type;
typedef boost::interprocess::allocator<map_value_typemanaged_shared_memory::segment_manager> map_value_type_allocator;
typedef boost::interprocess::map<  int, complex_data, std::less<  int>,map_value_type_allocator > complex_map_type;

我从http://www.boost.org/doc/libs/1_49_0/doc/html/interprocess/allocators_containers.html#interprocess.allocators_containers.containers_explained.containers_of_containers获取代码并用整数替换了键。但是我收到以下错误,我无法解决:

/usr/include/boost/container/map.hpp:147:1: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’

如果我更换密钥,代码似乎工作正常。任何人都可以看到问题在这里吗?

1 个答案:

答案 0 :(得分:1)

具有C ++模板编程经验的人员熟悉错误消息。忽略sizeof部分;线索在boost::STATIC_ASSERTION_FAILURE<false>。不应该实例化该类型,您需要boost::STATIC_ASSERTION_FAILURE<true>。但是什么确切的表达式被用作模板参数?

您的模板实例化错误应该有一个实例化堆栈,它会从您的代码导致失败。大概是在检查