これが私のコードです:
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 でエラーが発生しました: error C2529: '_Left' : reference to reference is illegal From inside library code.
しかし、私はここで試してみましたが、コンパイルされます: 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
};