考虑下面的程序:比较运营商directory_entry缺少
#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'
根据documentation(我仍然在使用Boost 1.45),还有为directory_entry
定义的比较运算符,但我和编译器都没有找到它们(我手动检查了这些头文件)。我可以忽略一些东西吗难道是因为我在建立提升时犯了一个错误,也许是通过设置一些禁用这些运算符的选项?文档是否错误?谁能解释一下?
该代码是否为您编译? – 2011-03-10 13:47:47
我没有测试它,我有一个旧版本的库,没有这些运算符 – decltype 2011-03-10 15:13:37