On this page
std::is_trivial
| Defined in header <type_traits> | ||
|---|---|---|
|  | (since C++11) | 
std::is_trivial is a UnaryTypeTrait.
If T is a trivial type, provides the member constant value equal to true. For any other type, value is false.
If std::remove_all_extents_t<T> is an incomplete type and not (possibly cv-qualified) void, the behavior is undefined.
The behavior of a program that adds specializations for std::is_trivial or std::is_trivial_v is undefined.
Template parameters
| T | - | a type to check | 
Helper variable template
|  | (since C++17) | 
Inherited from std::integral_constant
Member constants
| value
         [static]
         | trueifTis a trivial type,falseotherwise(public static member constant) | 
Member functions
| operator bool
         | converts the object to bool, returns value(public member function) | 
| operator()
         (C++14)
         | returns value(public member function) | 
Member types
| Type | Definition | 
|---|---|
| value_type | bool | 
| type | std::integral_constant<bool, value> | 
Example
#include <type_traits>
 
struct A { int m; };
static_assert(std::is_trivial_v<A> == true);
 
struct B { B() {} };
static_assert(std::is_trivial_v<B> == false);
 
int main() {}Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior | 
|---|---|---|---|
| LWG 2015 | C++11 | Tcould be an array of incompleteclass type with unknown bound | the behavior is undefined in this case | 
See also
| (C++11)
        | checks if a type is trivially copyable (class template) | 
| (C++11)(C++11)(C++11)
        | checks if a type has a default constructor (class template) | 
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
 https://en.cppreference.com/w/cpp/types/is_trivial