Multiple Destructors with C++20
Get an overview of how multiple destructors are implemented with C++ 20.
We'll cover the following...
We still have a class template, but instead of std::conditional
, we use the trailing requires
clause to provide an overload for the destructor.
Remember we learned earlier that, in class templates, we can provide function overloads using different constraints. This is true even for constructors and destructors.
Press + to interact
#include <iostream>#include <string>#include <type_traits>template <typename T>class Wrapper{T t;public:~Wrapper() requires (!std::is_trivially_destructible_v<T>) {std::cout << "Not trivial\n";}~Wrapper() = default;};int main(){Wrapper<int> wrappedInt;Wrapper<std::string> wrappedString;}
In the ...