考慮下面的程序:比較運營商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