2012-06-25 2 views
0

나는 다음과 같이 정의와 부스트지도를 가지고 :은 정수 키를 사용하여지도를 향상시킬 수 있습니까?

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

실제 코드에도'map_value_type_allocator'의 정의에서','가 누락되어 있습니까? –

+0

이것은 정적 어설 션입니다. 실제로 어설트 된 코드/오류 메시지를 보면서 귀찮았습니까? – PlasmaHH

+0

간단히 "키를 정수로 대체"하면 오류없이 컴파일됩니다. http://ideone.com/XkhLp (비록 ideone에서 사용할 수없는 라이브러리로 인해 링크 오류가 발생하지만). 코드를 게시하여 잘못 된 부분을 볼 수 있습니까? –

답변

1

오류 메시지는 C++ 템플릿 프로그래밍 경험이있는 사람들에게 익숙합니다. sizeof 부분을 무시하십시오. 단서는 boost::STATIC_ASSERTION_FAILURE<false>에 있습니다. 그 유형을 인스턴스화해서는 안되며, 당신은 boost::STATIC_ASSERTION_FAILURE<true>을 원한다. 그러나 정확한 표현식이 템플릿 인수로 사용됩니까?

템플릿 인스턴스화 오류에는 코드에서 실패로 이어지는 인스턴스화 스택이 있어야합니다. 아마도 그것은 확인 중입니다

관련 문제