Рассмотрим следующую программу:
#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;
}
Не удается скомпилировать (Visual Studio 2005, Windows XP SP3) с 17 вариантами этой ошибки:
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
определены операторы сравнения, но ни я, ни компилятор не могут их найти (я проверял заголовки вручную). Я что-то пропускаю? Может быть, я допустил ошибку при создании boost, возможно, установив какой-то параметр, который отключает эти операторы? Документация неверна? Кто-нибудь может объяснить?