32bit g++编译64位整数作为key的__gnu_cxx::hash_map的编译错误问题
来源:互联网 发布:佟大为演技 知乎 编辑:程序博客网 时间:2024/06/06 03:45
类似这样一段代码:
__gnu_cxx::hash_map<uint64_t, Obj> objs;
64bits的整数作为key的__gnu_cxx::hash_map, 原来一直在64bits的编译器下编译,一直好好的。有一次放到32bits的编译器下,产生一大堆乱七八糟的错误(模板编译错误提示太坑爹了)。问题出现在template<class _Key> struct hash{} 里面。
struct __gnu_cxx::hash{}偏特化了几种整数版本,包括char, short, int, long,以及上面4种unsigned版本,分析unsigned long的版本:
template <>
struct hash<unsigned long>
{
。。。。。
};
在64bits编译环境下, unsigned long是和uint64_t一致的, 而在32bits 的下面,就相当于uint32_t了。
解决的办法是,自己特化一个uint64_t的版本,类似
namespace __gnu_cxx
{
template <>
struct hash<uint64_t> {。。。。。};
}
- 32bit g++编译64位整数作为key的__gnu_cxx::hash_map的编译错误问题
- 转 解决64位ubuntu上编译32bit程序的问题
- linux 64bit 编译SDL1的问题
- linux编译android时报gcc和g++错误问题 [gcc]: unknown (64-bit) [FAIL]
- HP 上编译的32位64位问题
- 记录一下 __gnu_cxx::hash_map传一个新allocator的写法
- 64bit centos如何编译 32bit的程序
- 解决编译内核模块helloworld.c:1: 错误:代码模式‘kernel’在 32 位模式下不受支持问题,未编译对64位的支持
- 64位版本编译遇到的问题
- 编译OpenSSL的64位碰到问题
- Ubuntu11.10(64bit)编译ICS可能会遇到的问题
- 关于vs2008 编译64bit程序的问题
- Ubuntu 14.04 LTS 64bit 编译SDL的问题
- [STL] __gnu_cxx::hash_map使用中的一些问题
- __gnu_cxx::hash_map使用中的一些问题
- __gnu_cxx::hash_map使用中的一些问题
- [STL] __gnu_cxx::hash_map使用中的一些问题
- ubuntu G++编译32位
- Android3.0中ActionBar的新特性
- C语言中数组的初始化问题
- 如何让Gridview在没有数据的时候显示表头(asp.net)
- VB.NET 特殊字符
- C语言指针小结
- 32bit g++编译64位整数作为key的__gnu_cxx::hash_map的编译错误问题
- 100个最佳Linux站点收藏
- Java编程中“为了性能”尽量要做到的一些地方
- Undocumented windows message 0x0313 & TTaskBarMenu
- 浅谈android的selector,背景选择器
- DP总结..未完待续
- Bridge模式C++代码
- axis tomcat 下调用ws ,can't declare any more prefixes in this context解决
- 关于left join 查询的一个小误区