binary_function
이 C++ 11에서 제거 된 것을 발견했습니다. 이유가 궁금합니다.unary_function을 사용하는 이유는 무엇입니까? binary_function이 C++ 11에서 제거 되었습니까?
C++ 98 :
template <class T> struct less : binary_function <T,T,bool> {
bool operator() (const T& x, const T& y) const {return x<y;}
};
C++ 11
template <class T> struct less {
bool operator() (const T& x, const T& y) const {return x<y;}
typedef T first_argument_type;
typedef T second_argument_type;
typedef bool result_type;
};
는 수정 ------------------- -------------------------------------------------- -------
template<class arg,class result>
struct unary_function
{
typedef arg argument_type;
typedef result result_type;
};
예를 들어 우리가 C + 98는,
는template <class T> struct even : unary_function <T,bool> {
bool operator() (const T& x) const {return 0==x%2;}
};
find_if(bgn,end,even<int>()); //find even number
//adapter
template<typename adaptableFunction >
class unary_negate
{
private:
adaptableFunction fun_;
public:
typedef adaptableFunction::argument_type argument_type;
typedef adaptableFunction::result_type result_type;
unary_negate(const adaptableFunction &f):fun_(f){}
bool operator()(const argument_type&x)
{
return !fun(x);
}
}
find_if(bgn,end, unary_negate< even<int> >(even<int>())); //find odd number
우리는 어떻게 unary_function
없이 C++ 11이에 향상시킬 수 있습니까? 가변 인자 템플릿
하며 binary_function, 바로 우리의 작업을 단순화하고 코드를보다 일관 할 수 있도록 설정할 수 있습니다? –
camino
@camino : 그래도 될까요? 그것없이 –
우리는 형식 정의 T의 first_argument_type이라고 정의해야합니다, ..., 어쩌면 우리는 뭔가 – camino