【发布时间】:2016-03-13 14:51:40
【问题描述】:
我在运行 Ubuntu 的工作站上编译我在 Windows 10 Code::Blocks 环境中编写的程序时遇到了一些问题。
具体来说,代码没有问题的编译器是
g++ (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 5.3.0*
而编译器抱怨代码是
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
后者抱怨多段代码,包括 Alglib 库的各个部分以及 Numerical Recipes NR3 库的重载 throw() 定义。
我可以绕过使用上面的两个库,但不明白为什么我为我的一个类编写的 has 函数会出现问题。它给了我一个
错误:“类型名称”声明为返回函数的函数
换行
for(auto& P : n) res = res ^ ((std::hash<double>()(double(int(P))) ) << ct++ );
其中 n 是一个 stl 整数向量和类的成员。 所以我的问题是:
为什么 Ubuntu g++ 编译器不遵循与 MinGW g++ 相同的标准? (是否可以在 Ubuntu 上更改为遵循相同标准的某些版本的 g++)
我的哈希函数中的行有什么歧义(哈希函数的效率/质量目前并不那么重要)
【问题讨论】: