這裏的std :: NOT1編譯是我的代碼:誤差時unary_function使用引用參數
using namespace std;
class Pixel
{
public:
bool AreSamplesIdentical() const
{
return true;
}
};
namespace
{
class Predicate_SamplesEqual : public unary_function<const Pixel&, bool>
{
public:
bool operator() (const Pixel& pixel) const
{
return pixel.AreSamplesIdentical();
}
};
}
int main()
{
vector<Pixel> pixels(10);
find_if(pixels.begin(), pixels.end(), not1(Predicate_SamplesEqual()));
}
在Visual Studio 2008中C++ Express中,我得到錯誤: 錯誤C2529: '_Left':參考參考非法 從庫內部代碼。
但我想在這裏和它編譯: http://ideone.com/swWrZT
誰是錯在這裏?如果我,我如何編碼解決方法?
錯誤發生時所指示的線從官能
// TEMPLATE CLASS unary_negate
template<class _Fn1>
class unary_negate
: public unary_function<typename _Fn1::argument_type, bool>
{ // functor adapter !_Func(left)
public:
explicit unary_negate(const _Fn1& _Func)
: _Functor(_Func)
{ // construct from functor
}
/**error**/bool operator()(const typename _Fn1::argument_type& _Left) const
{ // apply functor to operand
return (!_Functor(_Left));
}
protected:
_Fn1 _Functor; // the functor to apply
};
請告訴我完整的錯誤,特別是你的代碼的行使得報錯了? – PlasmaHH 2013-03-25 16:50:56
編輯包含。 – 2013-03-25 16:56:30