2015-01-31 1 views
2

unordered_map도 삽입, 나는 다음과 같은 오류가 발생 계속 :표준 : TR1 :: 구축 할 때 나는 표준 : TR1 :: unordered_map도의 삽입 기능을 사용할 수 없습니다 해요 오류

/usr/include/c++/4.2.1/tr1/hashtable:855:14: error: cannot initialize return object of type '_Node *' (aka '_Hash_node<std::pair<const unsigned long long, Order>, false> *') with an rvalue of type 'bool' 
     return false; 
     ^~~~~ 

내 다음과 같이 압축 된 코드는 다음과 같습니다 나는 그것이 내가 키로 만도 int로 내가 같은 오류가 있음을 변경 한 후 오래 오래 사용했다는 사실과 함께해야 할 일을했을 어쩌면 생각

#include <tr1/unordered_map> 
#include "handler.h" 
#include "endian_tools.h" 

using namespace std::tr1; 
using namespace std; 

unordered_map<uint64_t, Order> book_by_id; 

uint64_t ref_num = be64toh(msg); 
Order order(ref_num); 

book_by_id.insert(make_pair<uint64_t,Order>(ref_num, order)); 

. 이견있는 사람? 이 오류가있는 다른 사용자를 온라인에서 찾을 수 없었습니다.

+0

사용중인 컴파일러는 무엇입니까? – Ram

+1

참고로,'std :: make_pair' 함수를 사용하는 이유는 타입을 명시 적으로 지정할 필요가 없기 때문입니다 (템플릿 타입 공제가 당신을 대신 해줍니다). 대신에 그냥'book_by_id.insert (make_pair (ref_num, order));' –

+0

'tr1 :: unordered_map'을할까요? 귀하의 컴파일러는 몇 살입니까? – Borgleader

답변

1

문제는 내 gcc 버전과 C++ 11 (Mac OSX는 기본적으로 오래된 gcc 버전을 사용합니다.이 상황에서 어떻게 끝났습니까)에 대한 지원이 부족하다고 생각합니다. gcc를 macports로 4.8로 업그레이드하고, 기본값으로 설정하고, 다음 지침에 따라 CrossGCC 컴파일러로 새 프로젝트를 만들었습니다 : use c++11 on mac os x mountain lion with eclipse (Juno or Kepler). tr1을 제거하고 현재는 #include <unordered_map> 만 사용하고 있습니다. 이제 insert 메서드를 사용하는 데 아무런 문제가 없습니다.

제안 해 주셔서 감사합니다.

관련 문제