std::experi...::scope_fail(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– std::experimental::scope_fail::scope_fail πŸ’–

okay bestie, welcome to the C++ Standard Libary manual page for std::experimental::scope_fail::scope_fail β€” manual name: std::experi...::scope_fail(3). it's giving constructor lore ✨


✨ NAME ✨

std::experimental::scope_fail::scope_fail β€” literally std::experimental::scope_fail::scope_fail. the constructor. iconic. πŸ’…

πŸ¦‹ Synopsis πŸ¦‹

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

Creates a scope_fail from a function, a function object or another scope_fail. let's break it down, bestie 🫢

  1. the function / function-object constructor β€” Initializes the exit function with a function or function object, and initializes the counter of uncaught exceptions as if with std::uncaught_exceptions(). The constructed scope_fail is active. If Fn is not an lvalue reference type and std::is_nothrow_constructible_v<EF, Fn> is true, the stored EF is initialized with std::forward<Fn>(fn); otherwise it is initialized with fn. If initialization of the stored EF throws an exception, calls fn(). This overload participates in overload resolution only if std::is_same_v<std::remove_cvref_t<Fn>, scope_fail> 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() throws an exception or results in undefined behavior, even if fn has not been called. 😭
  2. move constructor β€” 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_fail 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 initializes 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. copy constructor is deleted β€” scope_fail is not CopyConstructible. periodt.

🌸 Parameters 🌸

  • fn β€” function or function object used for initializing the stored EF.
  • other β€” scope_fail 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&>)
  1. 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_fail inactive (public member function)

πŸ’œ Categories πŸ’œ

  • conditionally noexcept
  • Todo no example

made with πŸ’– by http://cppreference.com Β· version/date 2024.06.10 Β· page std::experi...::scope_fail(3) Β· byeee bestie πŸŽ€βœ¨

πŸ“¦ where this page comes from