home | help
std::binary_function(3)        C++ Standard Libary	 std::binary_function(3)

NAME
     std::binary_function - std::binary_function

Synopsis
	Defined in header <functional>
	template<

	    class Arg1, 		(deprecated in C++11)
	    class Arg2, 		(removed in C++17)
	    class Result

	> struct binary_function;

	std::binary_function  is a base class for creating function objects with
     two
	arguments.

	std::binary_function does not define operator(); it is expected that de-
     rived classes
	will define this. std::binary_function provides only three types -
	first_argument_type, second_argument_type and result_type -  defined  by
     the template
	parameters.

	Some  standard	library function object adaptors, such as std::not2, re-
     quire the
	function objects they adapt to have certain types defined; std::not2 re-
     quires the
	function object being  adapted	to  have  two  types  named  first_argu-
     ment_type and
	second_argument_type.  Deriving function objects that take two arguments
     from
	std::binary_function is an easy way to make them compatible  with  those
     adaptors.

	std::binary_function is deprecated in C++11 and removed in C++17.

Member types
	Type		     Definition
	first_argument_type  Arg1
	second_argument_type Arg2
	result_type	     Result

Example
     // Run this code

      #include <algorithm>
      #include <functional>
      #include <iostream>
      #include <vector>

      struct same : std::binary_function<int, int, bool>
      {
	  bool operator()(int a, int b) const { return a == b; }
      };

      int main()
      {
	  std::vector<char> v1{'A', 'B', 'C', 'D', 'E'};
	  std::vector<char> v2{'E', 'D', 'C', 'B', 'A'};
	  std::vector<bool> v3(v1.size());

	  std::transform(v1.begin(),	 v1.end(),    v2.begin(),    v3.begin(),
     std::not2(same()));

	  std::cout << std::boolalpha;
	  for (std::size_t i = 0; i < v1.size(); ++i)
	      std::cout << v1[i] << " != " << v2[i] << " : " << v3[i] << '\n';
      }

Output:
      A != E : true
      B != D : true
      C != C : false
      D != B : true
      E != A : true

See also
	function		    wraps  callable  object  of  any  copy  con-
     structible type with
	(C++11) 		   specified function call signature
				   (class template)
	move_only_function	   wraps callable object of any type with speci-
     fied function
	(C++23) 		   call signature
				   (class template)
	ptr_fun 		   creates an adaptor-compatible function object
     wrapper
	(deprecated in C++11)	   from a pointer to function
	(removed in C++17)	   (function template)
	pointer_to_binary_function  adaptor-compatible	wrapper for a pointer to
     binary
	(deprecated in C++11)	   function
	(removed in C++17)	   (class template)
	unary_function		   adaptor-compatible unary function base class
	(deprecated in C++11)	   (class template)
	(removed in C++17)

http://cppreference.com 	   2024.06.10		 std::binary_function(3)

home | help