标准::TR1::unordered_map插入错误
std::tr1::unordered_map insert error
我无法对 std::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;
^~~~~
我的精简代码如下:
#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));
我想这可能与我使用长长作为键的事实有关,但即使在将其更改为 int 后,我也会收到相同的错误。有什么想法吗?我无法在网上任何地方找到其他有此错误的人。
我认为问题出在我的 gcc 版本及其对 C++11 的支持方面(Mac OSX 默认使用旧的 gcc 版本,这就是我在这种情况下结束的原因)。我使用 macports 将 gcc 升级到 4.8,将其设置为默认值,并根据以下说明使用 CrossGCC 编译器创建了一个新项目:在 mac os x 带有日食的美洲狮(Juno 或 Kepler)上使用 c++11。我删除了tr1,现在只使用#include <unordered_map>
.现在我使用插入方法没有问题。
谢谢大家的建议。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在链表中的第 n 位插入显示分割错误
- C++ - 将元素按升序插入数组的 SEG 错误
- 在二叉搜索树中插入时出现分段错误
- 尝试将对象插入空指针数组时出现分段错误
- 尝试使用 EvtSetChannelConfigProperty() 函数更新最大事件日志文件大小时插入的错误值
- Sqlite3插入错误C++
- std::映射导致插入时出现C2664错误
- 为什么 C++ 中的分号在插入代码开头时不显示任何错误?
- 我在C++中遇到插入运算符错误
- 在共享内存中插入映射映射时出现编译器错误
- VS 2017 错误 C2664 地图插入尝试
- std::map 插入错误:没有运算符"<"与这些操作数匹配
- std::unordered_map 插入错误shared_ptr C++
- 使用boost::引用元组作为orderedunique索引的关键字时出现boost多索引插入错误
- std::矢量插入错误
- 标准::TR1::unordered_map插入错误
- 自定义键出现c++映射插入错误
- 异常消息:插入错误值的字符串表示
- unordered_map插入错误C++