我正在尝试在 FreeBSD 9.2 上编译一些软件,但遇到了问题。我自己不是 C++ 开发人员,而且显然无法在谷歌中找到合适的内容,我一直无法解决这个问题。
开发人员将 -std=c++0x 插入到 CXXFLAGS 中,但 FreeBSD 上的 g++ 版本不支持。根据我在谷歌上找到的建议,我已经使用 clang++ 将其切换到 c++11,但我仍然遇到这个问题:
clang++ -DHAVE_CONFIG_H -I. -I.. -std=c++11 -Wall -Wno-parentheses -Wno-switch -Wno-sign-compare -Wno-char-subscripts -g -O2 -MT packet_handler.o -MD -MP -MF .deps/packet_handler.Tpo -c -o packet_handler.o packet_handler.cpp
In file included from packet_handler.cpp:32:
In file included from ./packetq.h:35:
In file included from ./sql.h:52:
./variant.h:270:49: error: no member named 'hash' in namespace 'std'
case(Coltype::_bool): return std::hash<bool>()(m_val.m_bool);
我没有理由相信这仅限于 std::hash 的问题 .. 这只是失败的第一件事。另一方面..也许这是唯一的问题。
我找到了很多关于为什么使用 std::* 而不是“使用命名空间”的建议,以及很多关于如何编写代码以避免出现此类问题的建议,而不是关于如何处理的建议在现有项目中使用此功能。我无法在整个项目中重构代码。
我希望我在这里遗漏了一些简单的东西,可以让我编译它。谁能指出我正确的文档?