std::has_virtual_destructor in C++ with examples
In this article, we will learn about the has_virtual_destructor in C++ with examples. This function of C++ STL tells us if any template type T has a virtual destructor or not.
Header File:
#include<type_traits>
Syntax:
template<class T> struct has_virtual_destructor;
Parameter:
It can take only one parameter T to check whether it has a virtual destructor or not.
Return Value:
- If the virtual destructor is present, then true.
- If not, then false.
Program to understand the has_virtual_destructor function in C++
Program 1:
#include<bits/stdc++.h>
using namespace std;
struct s1
{
virtual ~s1() {}
};
struct s2
{
};
struct s3:s1
{
};
int main()
{
cout << boolalpha;
cout << "has_virtual_destructor:"
<< endl;
cout << "int: "
<< has_virtual_destructor<int>::value
<< endl;
cout << "s1: "
<< has_virtual_destructor<s1>::value
<< endl;
cout << "s2: "
<< has_virtual_destructor<s2>::value
<< endl;
cout << "s3: "
<< has_virtual_destructor<s3>::value
<< endl;
}
Output:
has_virtual_destructor: int: false s1: true s2: false s3: true
Program 2:
#include<bits/stdc++.h>
using namespace std;
struct s1
{
};
struct s2
{
virtual ~s2() {}
};
struct s3:s2
{
};
int main()
{
cout << boolalpha;
cout << "has_virtual_destructor:"
<< endl;
cout << "int: "
<< has_virtual_destructor<int>::value
<< endl;
cout << "s1: "
<< has_virtual_destructor<s1>::value
<< endl;
cout << "s2: "
<< has_virtual_destructor<s2>::value
<< endl;
cout << "s3: "
<< has_virtual_destructor<s3>::value
<< endl;
}
Output:
has_virtual_destructor: int: false s1: false s2: true s3: true
Thank You for reading!!
Leave a Reply