FreeBSD 9.2 でいくつかのソフトウェアをコンパイルしようとしていますが、問題が発生しました。私自身は C++ 開発者ではなく、どうやら Google で適切な部分を見つけることができないため、問題を解決できませんでした。
開発者は -std=c++0x を CXXFLAGS に挿入しましたが、これは FreeBSD の g++ のバージョンではサポートされていません。Googleで見つけたアドバイスに基づいて、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::* を使用する方が良い理由について多くのアドバイスを見つけました。また、この種の問題が発生しないようにコードを適切に記述する方法について開発者に多くのアドバイスを見つけましたが、対処方法については知りませんでした。これを既存のプロジェクトで使用します。このプロジェクト全体のコードをリファクタリングする立場にはありません。
これをコンパイルできるようにする簡単なものがここにないことを願っています。誰かが私に適切なドキュメントを教えてもらえますか?