diff --git a/docs/headers.md b/docs/headers.md index 96465a3c..c41d49be 100644 --- a/docs/headers.md +++ b/docs/headers.md @@ -808,7 +808,7 @@ explicit final_action(F&& ff) noexcept; Construct an object with the action to invoke in the destructor. ```cpp -~final_action() noexcept; +~final_action() noexcept(std::is_nothrow_invocable_v); ``` The destructor will call the action that was passed in the constructor. diff --git a/include/gsl/util b/include/gsl/util index fb7572eb..443f112e 100644 --- a/include/gsl/util +++ b/include/gsl/util @@ -77,7 +77,7 @@ public: explicit final_action(const F& ff) noexcept : f{ff} { } explicit final_action(F&& ff) noexcept : f{std::move(ff)} { } - ~final_action() noexcept { if (invoke) f(); } + ~final_action() noexcept(std::is_nothrow_invocable_v) { if (invoke) f(); } final_action(final_action&& other) noexcept : f(std::move(other.f)), invoke(std::exchange(other.invoke, false))