From 4c624e288cf810601d0938aedec5b621dd78d833 Mon Sep 17 00:00:00 2001 From: Richard Barnes Date: Sun, 25 Feb 2024 22:43:13 -0800 Subject: [PATCH] Fix deprecated behaviour in folly/Subprocess.h Summary: Future C++ standards and compiler upgrades will eliminate deprecated behaviour. `-Wdeprecated` identifies this behaviour and has found some in this code! Some examples. **Dynamic exceptions** ``` error: dynamic exception specifications are deprecated [-Werror,-Wdeprecated-dynamic-exception-spec] ``` `throw(...)` has been deprecated since C++11 and removed in C++17. In most cases we can just use `noexcept` in the rest, we can remove this. **Implicit copy constructors** ``` error: definition of implicit copy constructor for 'XXX' is deprecated because it has a user-declared destructor [-Werror,-Wdeprecated-copy-with-dtor] ``` If you define a destructor, you need to explicitly define a copy constructor. **Out-ofline constexpr static** ``` error: out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated [-Werror,-Wdeprecated] ``` This can be simplified: ``` class MyClass { static constexpr my_const = 3; }; static constexpr MyClass::my_const; // <- No longer needed! ``` Reviewed By: meyering Differential Revision: D54158200 fbshipit-source-id: 48d316b567810ddf8547038232eeef97b4054f61 --- folly/Subprocess.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/folly/Subprocess.h b/folly/Subprocess.h index e23f3720a2a..f339f6f1f08 100644 --- a/folly/Subprocess.h +++ b/folly/Subprocess.h @@ -237,7 +237,7 @@ class FOLLY_EXPORT SubprocessError : public std::runtime_error { class FOLLY_EXPORT CalledProcessError : public SubprocessError { public: explicit CalledProcessError(ProcessReturnCode rc); - ~CalledProcessError() throw() override = default; + ~CalledProcessError() noexcept override = default; ProcessReturnCode returnCode() const { return returnCode_; } private: @@ -250,7 +250,7 @@ class FOLLY_EXPORT CalledProcessError : public SubprocessError { class FOLLY_EXPORT SubprocessSpawnError : public SubprocessError { public: SubprocessSpawnError(const char* executable, int errCode, int errnoValue); - ~SubprocessSpawnError() throw() override = default; + ~SubprocessSpawnError() noexcept override = default; int errnoValue() const { return errnoValue_; } private: