La plantilla std::is_trivially_default_construtible de C++ STL está presente en el archivo de encabezado <type_traits> . La plantilla std::is_trivially_default_constructible de C++ STL se usa para verificar si T es un tipo construible trivialmente predeterminado o no. Devuelve el valor booleano verdadero si T es un tipo construible trivialmente predeterminado; de lo contrario, devuelve falso.
Archivo de cabecera:
#include<type_traits>
Clase de plantilla:
template< class T > struct is_default_constructible;
Sintaxis:
std::is_trivially_default_constructible<T>::value
Parámetro: la plantilla std::is_trivially_default_construcible acepta un solo parámetro T (clase de rasgo) para verificar si T es un tipo construible trivialmente predeterminado o no.
Valor devuelto: La plantilla std::is_trivially_default_construcible devuelve una variable booleana como se muestra a continuación:
- Verdadero: si el tipo T es un construible trivialmente predeterminado.
- Falso: si el tipo T no es un construible trivialmente predeterminado.
A continuación se muestra el programa para demostrar std::is_trivially_default_construcible en C++:
Programa 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
Programa 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
Referencia: http://www.cplusplus.com/reference/type_traits/is_trivially_default_construtible/
Publicación traducida automáticamente
Artículo escrito por bansal_rtk_ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA