我使用如下定义来提升地图:
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>’
如果我更换密钥,代码似乎工作正常。任何人都可以看到问题在这里吗?
答案 0 :(得分:1)
具有C ++模板编程经验的人员熟悉错误消息。忽略sizeof
部分;线索在boost::STATIC_ASSERTION_FAILURE<false>
。不应该实例化该类型,您需要boost::STATIC_ASSERTION_FAILURE<true>
。但是什么确切的表达式被用作模板参数?
您的模板实例化错误应该有一个实例化堆栈,它会从您的代码导致失败。大概是在检查