is_trivial function in C++
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; } |
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.
Please Login to comment...