La plantilla std::is_nothrow_destructible de C++ STL está presente en el archivo de encabezado <type_traits>. La plantilla std::is_nothrow_denstructible de C++ STL se usa para verificar si T es de tipo destructible o no y esto se sabe que no arroja ninguna excepción. Devuelve el valor booleano verdadero si T es de tipo destructible, de lo contrario devuelve falso.
Archivo de cabecera:
#include<type_traits>
Clase de plantilla:
template <class T> struct is_nothrow_destructible;
Sintaxis:
std::is_nothrow_destructible<T>::value
Parámetro: la plantilla std::is_nothrow_destructible acepta un solo parámetro T (clase de rasgo) para comprobar si T es de tipo destructible o no.
Valor devuelto: La plantilla std::is_nothrow_destructible devuelve un valor booleano:
- Verdadero: si el tipo T es de tipo destructible.
- Falso: si el tipo T no es de tipo destructible.
A continuación se encuentran los programas para demostrar std::is_nothrow_destructible en C++ :
Programa 1:
// C++ program to illustrate // std::is_nothrow_destructible #include <bits/stdc++.h> #include <type_traits> using namespace std; // Declare a structures struct X { }; struct Y { // Destructors ~Y() = delete; }; struct Z { ~Z() = default; }; struct A : Y { }; // Driver Code int main() { cout << boolalpha; // Check if int is nothrow // destructible or not cout << "int is nothrow destructible? " << is_nothrow_destructible<int>::value << endl; // Check if float is nothrow // destructible or not cout << "float is nothrow destructible? " << is_nothrow_destructible<float>::value << endl; // Check if struct X is // nothrow destructible or not cout << "struct X is nothrow destructible? " << is_nothrow_destructible<X>::value << endl; // Check if struct Y is // nothrow destructible or not cout << "struct Y is nothrow destructible? " << is_nothrow_destructible<Y>::value << endl; // Check if struct Z is // nothrow destructible or not cout << "struct Z is nothrow destructible? " << is_nothrow_destructible<Z>::value << endl; // Check if struct A is // nothrow destructible or not cout << "struct A is nothrow destructible? " << is_nothrow_destructible<A>::value << endl; return 0; }
int is nothrow destructible? true float is nothrow destructible? true struct X is nothrow destructible? true struct Y is nothrow destructible? false struct Z is nothrow destructible? true struct A is nothrow destructible? false
Programa 2:
// C++ program to illustrate // std::is_nothrow_destructible #include <bits/stdc++.h> #include <type_traits> using namespace std; // Class GfG class GfG { int v1; float v2; public: GfG(int n) : v1(n), v2() { } GfG(int n, double f) noexcept : v1(n), v2(f) {} }; // Declare Structure struct X { int n; X() = default; }; // Driver Code int main() { cout << boolalpha; cout << "GfG is Nothrow-destructible for int? " << is_nothrow_destructible<int>::value << '\n'; cout << "GfG is Nothrow-destructible for GfG? " << is_nothrow_destructible<GfG>::value << '\n'; cout << "GfG is Nothrow-destructible for struct X? " << is_nothrow_destructible<X>::value << '\n'; }
GfG is Nothrow-destructible for int? true GfG is Nothrow-destructible for GfG? true GfG is Nothrow-destructible for struct X? true
Referencia: http://www.cplusplus.com/reference/type_traits/is_nothrow_destructible/
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