std::is_trivially_default_constructible in C++ with Example
The std::is_trivially_default_constructible template of C++ STL is present in the <type_traits> header file. The std::is_trivially_default_constructible template of C++ STL is used to check whether T is trivially default constructible type or not. It return the boolean value true if T is trivially default constructible type, otherwise return false.
Header File:
#include<type_traits>
Template Class:
template< class T > struct is_default_constructible;
Syntax:
std::is_trivially_default_constructible<T>::value
Parameter: The template std::is_trivially_default_constructible accepts a single parameter T(Trait class) to check whether T is trivially default constructible type or not.
Return Value: The template std::is_trivially_default_constructible returns a boolean variable as shown below:
- True: If the type T is a trivially default constructible.
- False: If the type T is not a trivially default constructible.
Below is the program to demonstrate std::is_trivially_default_constructible in C++:
Program 1:
// C++ program to demonstrate // std::is_trivially_default_constructible #include <iostream> #include <type_traits> using namespace std; // Declaration of classes class A { }; class B { B() {} }; enum class C : int { x, y, z }; class D { int v1; double v2; public : D( int n) : v1(n), v2() { } D( int n, double f) noexcept : v1(n), v2(f) {} }; int main() { cout << boolalpha; // Check if int is trivially // default constructible or not cout << "int: " << is_trivially_default_constructible< int >::value << endl; // Check if class A is trivially // default constructible or not cout << "class A: " << is_trivially_default_constructible<A>::value << endl; // Check if class B is trivially // default constructible or not cout << "class B: " << is_trivially_default_constructible<B>::value << endl; // Check if enum class C is trivially // default constructible or not cout << "enum class C: " << is_trivially_default_constructible<C>::value << endl; // Check if class D is trivially // default constructible or not std::cout << "class D: " << is_trivially_default_constructible<D>::value << endl; return 0; } |
int: true class A: true class B: false enum class C: true class D: false
Program 2:
// C++ program to demonstrate // std::is_trivially_default_constructible #include <iostream> #include <type_traits> using namespace std; // Declare structures struct Ex1 { Ex1() {} Ex1(Ex1&&) { cout << "Throwing move constructor!" ; } Ex1( const Ex1&) { cout << "Throwing copy constructor!" ; } }; struct Ex2 { Ex2() {} Ex2(Ex2&&) noexcept { cout << "Non-throwing move constructor!" ; } Ex2( const Ex2&) noexcept { cout << "Non-throwing copy constructor!" ; } }; // Driver Code int main() { cout << boolalpha; // Check if struct Ex1 is default // constructible or not cout << "Ex1 is default-constructible? " << is_trivially_default_constructible<Ex1>::value << '\n' ; // Check if struct Ex1 is trivially // defaultconstructible or not cout << "Ex1 is trivially default-constructible? " << is_trivially_default_constructible<Ex1>::value << '\n' ; // Check if struct Ex2 is trivially // defaultconstructible or not cout << "Ex2 is trivially default-constructible? " << is_trivially_default_constructible<Ex2>::value << '\n' ; } |
Ex1 is default-constructible? false Ex1 is trivially default-constructible? false Ex2 is trivially default-constructible? false
Reference: http://www.cplusplus.com/reference/type_traits/is_trivially_default_constructible/
Please Login to comment...