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

FreeBSD Manual Pages

  
 
  

home | help
std::experi...cope_success(3) C++ Standard Libarystd::experi...cope_success(3)

NAME
       std::experimental::scope_success::scope_success	  -    std::experimen-
       tal::scope_success::scope_success

Synopsis
	  template <class Fn>
	  explicit scope_success( Fn&& fn  )  noexcept(/*see	 (1)  (library
       fundamentals TS v3)
	  below*/);
	  scope_success(  scope_success&&  other  )		  (2) (library
       fundamentals TS v3)
	  noexcept(/*see below*/);
	  scope_success( const scope_success& )	 =  delete;	 (3)  (library
       fundamentals TS v3)

	  Creates  a  scope_success  from a function, a	function object	or an-
       other scope_success.

	  1) Initializes the exit function with	a function or function object,
       and initializes
	  the counter of uncaught exceptions as	if  with  std::uncaught_excep-
       tions().	The
	  constructed scope_success is active.
	  If  Fn  is  not  an  lvalue  reference type and std::is_nothrow_con-
       structible_v<EF,	Fn> is
	  true,	the stored EF is initialized with std::forward<Fn>(fn);	other-
       wise it is
	  initialized with fn.
	  This overload	participates in	overload resolution only if
	  std::is_same_v<std::remove_cvref_t<Fn>, scope_success> is false and
	  std::is_constructible_v<EF, Fn> is true.
	  The program is ill-formed if function	call expression	fn()  is  ill-
       formed.
	  The  behavior	 is undefined if calling fn() results in undefined be-
       havior, even if fn
	  has not been called.
	  2) Move constructor. Initializes the	stored	EF  with  the  one  in
       other, and
	  initializes  the  counter  of	 uncaught  exceptions  with the	one in
       other. The
	  constructed scope_success is active if and only if other  is	active
       before the
	  construction.
	  If  std::is_nothrow_move_constructible_v<EF>	is  true,  initializes
       stored EF (denoted
	  by exitfun) with std::forward<EF>(other.exitfun), otherwise initial-
       izes it with
	  other.exitfun.
	  After	successful move	construction, other.release()  is  called  and
       other becomes
	  inactive.
	  This overload	participates in	overload resolution only if
	  std::is_nothrow_move_constructible_v<EF>	 is	  true	    or
       std::is_copy_constructible_v<EF>
	  is true.
	  The behavior is undefined if

	    * std::is_nothrow_move_constructible_v<EF> is true and EF does not
       meet the
	      requirements of MoveConstructible, or
	    * std::is_nothrow_move_constructible_v<EF> is false	 and  EF  does
       not meet	the
	      requirements of CopyConstructible.

	  3) scope_success is not CopyConstructible.

Parameters
	  fn	- function or function object used for initializing the	stored
       EF
	  other	- scope_success	to move	from

Exceptions
	  Any exception	thrown during the initialization of the	stored EF.

	  1)
	  noexcept specification:
	  noexcept(std::is_nothrow_constructible_v<EF, Fn> ||
	  std::is_nothrow_constructible_v<EF, Fn&>)
	  2)
	  noexcept specification:
	  noexcept(std::is_nothrow_move_constructible_v<EF> ||
	  std::is_nothrow_copy_constructible_v<EF>)

Example
	   This	section	is incomplete
	   Reason: no example

See also
	  uncaught_exception
	  uncaught_exceptions  checks  if  exception  handling is currently in
       progress
	  (removed in C++20)  (function)
	  (C++17)
	  release	      makes the	scope_success inactive
			      (public member function)

http://cppreference.com		  2022.07.31	 std::experi...cope_success(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::experimental::scope_success::scope_success&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help