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

NAME
     std::is_placeholder - std::is_placeholder

Synopsis
	Defined in header <functional>
	template< class T >		(since C++11)
	struct is_placeholder;

	If  T is the type of a standard placeholder (_1, _2, _3, ...), then this
     template is
	derived from std::integral_constant<int, 1>, std::integral_constant<int,
     2>,
	std::integral_constant<int, 3>, respectively.

	If T is not a standard placeholder type, this template is derived from
	std::integral_constant<int, 0>.

	A program may specialize this template for a program-defined type  T  to
     implement
	UnaryTypeTrait	with  base characteristic of std::integral_constant<int,
     N> with
	positive N to indicate that T should  be  treated  as  N^th  placeholder
     type.

	std::bind  uses  std::is_placeholder  to detect placeholders for unbound
     arguments.

Member constants
	value	 placeholder value or 0 for non-placeholder types
	[static] (public static member constant)

Member functions
	operator int converts the object to int, returns value
		     (public member function)
	operator()   returns value
	(C++14)      (public member function)

Member types
	Type	   Definition
	value_type int
	type	   std::integral_constant<int, value>

Example
     // Run this code

      #include <functional>
      #include <iostream>
      #include <type_traits>

      struct My_2 {} my_2;

      namespace std
      {
	  template<>
	  struct is_placeholder<My_2> : public integral_constant<int, 2> {};
      }

      int f(int n1, int n2)
      {
	  return n1 + n2;
      }

      int main()
      {
	  std::cout << "Standard placeholder _5 is for the argument number "
		    << std::is_placeholder_v<decltype(std::placeholders::_5)>
		    << '\n';

	  auto b = std::bind(f, my_2, 2);
	  std::cout << "Adding 2 to 11 selected with a custom placeholder  gives
     "
		    << b(10, 11) // the first argument, namely 10, is ignored
		    << '\n';
      }

Output:
      Standard placeholder _5 is for the argument number 5
      Adding 2 to 11 selected with a custom placeholder gives 13

See also
	bind		    binds one or more arguments to a function object
	(C++11) 	    (function template)
	_1,  _2,  _3,  _4,  ...  placeholders  for  the  unbound  arguments in a
     std::bind expression
	(C++11) 	    (constant)

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

home | help