Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::expected<T,E>::transform_error

      From cppreference.com
      <cpp‎ |utility‎ |expected
       
       
      Utilities library
       
       
      Primary template
      template<class F>
      constexprauto transform_error( F&& f)&;
      (1)(since C++23)
      template<class F>
      constexprauto transform_error( F&& f)const&;
      (2)(since C++23)
      template<class F>
      constexprauto transform_error( F&& f)&&;
      (3)(since C++23)
      template<class F>
      constexprauto transform_error( F&& f)const&&;
      (4)(since C++23)
      void partial specialization
      template<class F>
      constexprauto transform_error( F&& f)&;
      (5)(since C++23)
      template<class F>
      constexprauto transform_error( F&& f)const&;
      (6)(since C++23)
      template<class F>
      constexprauto transform_error( F&& f)&&;
      (7)(since C++23)
      template<class F>
      constexprauto transform_error( F&& f)const&&;
      (8)(since C++23)

      If*this contains an unexpected value, invokesf with the unexpected value of*this as the argument and returns astd::expected object that contains an unexpected value, which is initialized with the result off. Otherwise, returns astd::expected object that represents an expected value.

      1-4) The expected value is initialized with the expected valueval of*this.

      Given typeG as:

      1,2)std::remove_cv_t<std::invoke_result_t<F, decltype(error())>>
      3,4)std::remove_cv_t<std::invoke_result_t<F, decltype(std::move(error()))>>
      5,6)std::remove_cv_t<std::invoke_result_t<F, decltype(error())>>
      7,8)std::remove_cv_t<std::invoke_result_t<F, decltype(std::move(error()))>>

      If any of the following conditions is satisfied, the program is ill-formed:

      • G is not a valid template argument forstd::unexpected.
      • The following corresponding declaration is ill-formed:
      1,2)G g(std::invoke(std::forward<F>(f), error()));
      3,4)G g(std::invoke(std::forward<F>(f), std::move(error()));
      5,6)G g(std::invoke(std::forward<F>(f), error()));
      7,8)G g(std::invoke(std::forward<F>(f), std::move(error()));


      1,2) This overload participates in overload resolution only ifstd::is_constructible_v<T, decltype((val))> istrue.
      3,4) This overload participates in overload resolution only ifstd::is_constructible_v<T, decltype(std::move(val))> istrue.

      Contents

      [edit]Parameters

      f - a suitable function orCallable object whose call signature returns a non-reference type

      [edit]Return value

      Given expressionexpr as:

      1,2)std::invoke(std::forward<F>(f), error())
      3,4)std::invoke(std::forward<F>(f), std::move(error()))
      5,6)std::invoke(std::forward<F>(f), error())
      7,8)std::invoke(std::forward<F>(f), std::move(error()))

      The return values are defined as follows:

       Overload Value ofhas_value()
      truefalse
      (1,2)std::expected<T, G>(std::in_place, val)std::expected<T, G>
         (std::unexpect, expr)
      (3,4)std::expected<T, G>(std::in_place, std::move(val))
      (5,6)std::expected<T, G>()
      (7,8)

      [edit]Example

      This section is incomplete
      Reason: no example

      [edit]Defect reports

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

      DRApplied toBehavior as publishedCorrect behavior
      LWG 3938C++23the expected value was obtained byvalue()[1]changed to**this
      LWG 3973C++23the expected value was obtained by**this[2]changed toval
      1. value() requiresE to be copy constructible (seeLWG issue 3843), whereoperator* does not.
      2. **this can triggerargument-dependent lookup.

      [edit]See also

      returns theexpected itself if it contains an expected value; otherwise, returns the result of the given function on the unexpected value
      (public member function)[edit]
      returns anexpected containing the transformed expected value if it exists; otherwise, returns theexpected itself
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/utility/expected/transform_error&oldid=173511"

      [8]ページ先頭

      ©2009-2025 Movatter.jp