次のプログラムを検討してください。
#include <iostream>
#include "boost/filesystem.hpp"
int main()
{
boost::filesystem::directory_entry d("test.txt");
boost::filesystem::directory_entry e("test.txt");
if (d == e) { // <---- error C2784
std::cout << "equal" << std::endl;
}
return 0;
}
これは、このエラーの 17 のバリエーションでコンパイルに失敗します (Visual Studio 2005、Windows XP SP3)。
error C2784: 'bool std::operator ==(const std::stack<_Ty,_Container> &,
const std::stack<_Ty,_Container> &)' :
could not deduce template argument for
'const std::stack<_Ty,_Container> &' from
'boost::filesystem::directory_entry'
ドキュメント(私はまだBoost 1.45を使用しています)によると、に対して定義された比較演算子がありますdirectory_entry
が、私もコンパイラもそれらを見つけることができません(ヘッダーを手動でチェックしました)。私は何かを見落としていますか?これらのオペレーターを無効にするオプションを設定することで、ブーストを構築するときに間違いを犯した可能性がありますか? ドキュメントは間違っていますか?誰でも説明できますか?