Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
deductiongu...td::function(3) C++ Standard Libarydeductiongu...td::function(3)

NAME
       deductionguidesforstd::function - deductionguidesforstd::function

Synopsis
	  Defined in header <functional>
	  template<  class  R,	class...  ArgTypes  >			   (1)
       (since C++17)
	  function( R(*)(ArgTypes...) )	-> function<R(ArgTypes...)>;
	  template<  class  F	>					   (2)
       (since C++17)
	  function( F )	-> function</*see below*/>;
	  template<   class   F	 >					   (3)
       (since C++23)
	  function( F )	-> function</*see below*/>;
	  template<  class  F	>					   (4)
       (since C++23)
	  function( F )	-> function</*see below*/>;

	  1)  This  deduction guide is provided	for std::function to allow de-
       duction from
	  functions.
	  2) This overload participates	in overload resolution only if &F::op-
       erator()	is
	  well-formed  when  treated  as  an  unevaluated  operand   and   de-
       cltype(&F::operator()) is
	  of the form R(G::*)(A...) (optionally	cv-qualified, optionally noex-
       cept, optionally
	  lvalue   reference   qualified).  The	 deduced  type	is  std::func-
       tion<R(A...)>.
	  3) This overload participates	in overload resolution only if &F::op-
       erator()	is
	  well-formed when treated as an unevaluated operand and F::operator()
       is an explicit
	  object parameter function whose type is of form R(G, A...)  or  R(G,
       A...) noexcept.
	  The deduced type is std::function<R(A...)>.
	  4) This overload participates	in overload resolution only if &F::op-
       erator()	is
	  well-formed when treated as an unevaluated operand and F::operator()
       is a static
	  member  function  whose type is of form R(A...) or R(A...) noexcept.
       The deduced type
	  is std::function<R(A...)>.

Notes
	  These	deduction guides do not	allow deduction	from a	function  with
       ellipsis
	  parameter,  and the ... in the types is always treated as a pack ex-
       pansion.

	  The type deduced by these deduction guides may  change  in  a	 later
       standard	revision
	  (in  particular,  this  might	happen if noexcept support is added to
       std::function in	a
	  later	standard).

Example
       // Run this code

	#include <functional>
	int func(double) { return 0; }
	int main() {
	  std::function	f{func}; // guide #1 deduces function<int(double)>
	  int i	= 5;
	  std::function	g = [&](double)	{ return i; };	//  guide  #2  deduces
       function<int(double)>
	}

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	    Applied  to	    Behavior as	published	       Correct
       behavior
			      behavior of (2) was unclear    clarified	to  be
       excluded	from
	  LWG  3238 C++17      when			      overload resolu-
       tion
			      F::operator() is &&-qualified

http://cppreference.com		  2024.06.10	 deductiongu...td::function(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=deductionguidesforstd::function&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help