bind2ndでエラーになる
Posted: 2012年2月26日(日) 20:06
環境はg++4.6.2でXPです
以下がエラーコードです
#include <functional>
#include <vector>
#include <algorithm>
using namespace std;
class Comparison
{
public:
bool operator() (int a,int b)
{
return a>b;
}
};
int main(){
vector<int> vec;
for(int i = 0; i < 10; i++)
vec.push_back(i);
find_if(vec.begin(),vec.end(),bind2nd(Comparison(),5));
return 0;
}
g++ a.cpp
In file included from j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_function.h:731:0,
from j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/functional:50,
from a.cpp:1:j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/backward/binders.h: 'std::binder2nd<Comparison>' のインスタンス内:
a.cpp:24:54: instantiated from here
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/backward/binders.h:135:11: エラー: no type named 'first_argument_type' in 'class Comparison'
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/backward/binders.h:141:49: エラー: no type named 'second_argument_type' in 'class Comparison'
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/backward/binders.h:144:7: エラー: no type named 'second_argument_type' in 'class Comparison'
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/backward/binders.h:149:7: エラー: no type named 'result_type' in 'class Comparison'
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/backward/binders.h:155:7: エラー: no type named 'result_type' in 'class Comparison'
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/backward/binders.h: 関数 'std::binder2nd<_Operation> std::bind2nd(const _Operation&, const _Tp&) [with _Operation = Comparison, _Tp = int]' 内:
a.cpp:24:54: instantiated from here
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/backward/binders.h:164:57: エラー: no type named 'second_argument_type' in'class Comparison'
In file included from j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/algorithm:63:0,
from a.cpp:3:
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h: 関数 '_RandomAccessIterator
std::__find_if(_RandomAccessIterator, _RandomAccessIterator, _Predicate, std::random_access_iterator_tag) [with_RandomAccessIterator = __gnu_cxx::__normal_iterator<int*, std::vector<int> >, _Predicate = std::binder2nd<Comparison>]' 内:
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:4427:41: '_IIter std::find_if(_IIter, _IIter, _Predicate) [with_IIter = __gnu_cxx::__normal_iterator<int*, std::vector<int> >, _Predicate = std::binder2nd<Comparison>]' から実体化されました
a.cpp:24:55: instantiated from here
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:210:4: エラー: '(std::binder2nd<Comparison>) (int&)' への呼び出しが適合しません
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:4427:41: '_IIter std::find_if(_IIter, _IIter, _Predicate) [with _IIter = __gnu_cxx::__normal_iterator<int*, std::vector<int> >, _Predicate = std::binder2nd<Comparison>]' から実体化されました
a.cpp:24:55: instantiated from here
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:214:4: エラー: '(std::binder2nd<Comparison>) (int&)' への呼び出しが適合しません
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:218:4: エラー: '(std::binder2nd<Comparison>) (int&)' への呼び出しが適合しません
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:222:4: エラー: '(std::binder2nd<Comparison>) (int&)' への呼び出しが適合しません
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:230:4: エラー: '(std::binder2nd<Comparison>) (int&)' への呼び出しが適合しません
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:234:4: エラー: '(std::binder2nd<Comparison>) (int&)' への呼び出しが適合しません
j:\mingw\bin\../lib/gcc/mingw32/4.6.2/include/c++/bits/stl_algo.h:238:4: エラー: '(std::binder2nd<Comparison>) (int&)' への呼び出しが適合しません