Skip to content
Related Articles
Open in App
Not now

Related Articles

is_trivial function in C++

Improve Article
Save Article
  • Difficulty Level : Medium
  • Last Updated : 17 Dec, 2021
Improve Article
Save Article

is_trivial function is used to check whether the given type T is a trivial class or not. It is a template is declared in <type_traits> header file. A trivial type is a type whose storage is contiguous (trivially copyable) and which only supports static default initialization (trivially default constructible), either cv-qualified or not. It includes scalar types, trivial classes, and arrays of any such types.

A trivial class is a class (defined with class, struct, or union) that is both trivially default constructible and trivially copyable, which implies that: 
It uses the implicitly defined default, copy and move constructors, copy and move assignments, and destructor.

  • It has no virtual members.
  • It has no non-static data members with a brace- or equal- initializers.
  • Its base class and non-static data members (if any) are themselves also trivial types.

is_trivial inherits from integral_constant as being either true_type or false_type, depending on whether T is a trivial type.

Syntax:

template  struct is_trivial;

Example: 

std::is_trivial::value

CPP




// CPP program to illustrate is_trivial function
#include <iostream>
#include <type_traits>
using namespace std;
  
class A {
};
class B {
    B() {}
};
class C : B {
};
class D {
    virtual void fn() {}
};
  
// Driver Code
int main()
{
    std::cout << std::boolalpha;
    // Returns value in boolean type
    std::cout << "A: " << std::is_trivial<A>::value << endl;
    std::cout << "B: " << std::is_trivial<B>::value << endl;
    std::cout << "C: " << std::is_trivial<C>::value << endl;
    std::cout << "D: " << std::is_trivial<D>::value << endl;
    return 0;
}


Output

A: true
B: false
C: false
D: false

Here, A is a class that has been passed as a parameter to the function is_trivial and it will return a value of integral constant type bool i.e. true or false. 

This article is contributed by Mohak Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!