diff --git a/libvapours/include/vapours/util/util_i_function.hpp b/libvapours/include/vapours/util/util_i_function.hpp index e49f4350..b2966baf 100644 --- a/libvapours/include/vapours/util/util_i_function.hpp +++ b/libvapours/include/vapours/util/util_i_function.hpp @@ -58,6 +58,7 @@ namespace ams::util { F m_f; public: constexpr explicit Function(F f) : m_f(std::move(f)) { /* ... */} + constexpr virtual ~Function() override { /* ... */ } constexpr virtual R operator()(Args... args) const override final { return m_f(std::forward(args)...); @@ -68,6 +69,7 @@ namespace ams::util { class Function::value && !std::is_final::value>::type> final : public IFunction, private F { public: constexpr explicit Function(F f) : F(std::move(f)) { /* ... */} + constexpr virtual ~Function() override { /* ... */ } constexpr virtual R operator()(Args... args) const override final { return static_cast(*this).operator()(std::forward(args)...); @@ -90,7 +92,7 @@ namespace ams::util { template class IFunction { protected: - constexpr virtual ~IFunction() = default; + constexpr virtual ~IFunction() { /* ... */ }; public: constexpr virtual R operator()(Args... args) const = 0;