Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De <type_traits> header biedt de volgende functies:
is_assignable
Hiermee wordt getest of een waarde van het type Van kan worden toegewezen aan een Aan-type .
template <class To, class From>
struct is_assignable;
Parameterwaarden
Van tot
Het type object dat de toewijzing ontvangt.
Van
Het type van het object dat de waarde levert.
Opmerkingen
De niet-geƫvalueerde expressie declval<To>() = declval<From>() moet goed zijn gevormd. Zowel Van als Aan moeten volledige typen, voidof matrices van onbekende afhankelijkheid zijn.
is_copy_assignable
Hiermee wordt getest of het type kan worden gekopieerd bij de toewijzing.
template <class Ty>
struct is_copy_assignable;
Parameterwaarden
Ty
Het type dat u wilt opvragen.
Opmerkingen
Een exemplaar van het typepredicaat geldt als het type Ty een klasse is met een operator voor kopieertoewijzing, anders is het onwaar. Gelijk aan is_assignable<Ty&, const Ty&>.
is_copy_constructible
Test of het type een kopieerconstructor heeft.
template <class Ty>
struct is_copy_constructible;
Parameterwaarden
Ty
Het type dat u wilt opvragen.
Opmerkingen
Een exemplaar van het typepredicaat geldt als het type Ty een klasse is die een kopieconstructor heeft, anders is het onwaar.
Voorbeeld
#include <type_traits>
#include <iostream>
struct Copyable
{
int val;
};
struct NotCopyable
{
NotCopyable(const NotCopyable&) = delete;
int val;
};
int main()
{
std::cout << "is_copy_constructible<Copyable> == " << std::boolalpha
<< std::is_copy_constructible<Copyable>::value << std::endl;
std::cout << "is_copy_constructible<NotCopyable> == " << std::boolalpha
<< std::is_copy_constructible<NotCopyable>::value << std::endl;
return (0);
}
is_copy_constructible<Copyable> == true
is_copy_constructible<NotCopyable > == false
Is standaard constructibel
Test of een type een standaardconstructor heeft.
template <class Ty>
struct is_default_constructible;
Parameterwaarden
T
Het type dat u wilt opvragen.
Opmerkingen
Een exemplaar van het typepredicaat is waar als het type T een klassetype is dat een standaardconstructor heeft, anders is het onwaar. Dit komt overeen met het predicaat is_constructible<T>. Type T moet een volledig type of voideen matrix met onbekende afhankelijkheid zijn.
Voorbeeld
#include <type_traits>
#include <iostream>
struct Simple
{
Simple() : val(0) {}
int val;
};
struct Simple2
{
Simple2(int v) : val(v) {}
int val;
};
int main()
{
std::cout << "is_default_constructible<Simple> == " << std::boolalpha
<< std::is_default_constructible<Simple>::value << std::endl;
std::cout << "is_default_constructible<Simple2> == " << std::boolalpha
<< std::is_default_constructible<Simple2>::value << std::endl;
return (0);
}
is_default_constructible<Simple> == true
is_default_constructible<Simple2> == false
is_move_assignable
Test of het type kan worden verplaatst.
template <class T>
struct is_move_assignable;
Parameterwaarden
T
Het type dat u wilt opvragen.
Opmerkingen
Een type kan worden verplaatst als een rvalue-verwijzing naar het type kan worden toegewezen aan een verwijzing naar het type. Het typepredicaat is gelijk aan is_assignable<T&, T&&>. Verplaatstoewijsbare typen zijn onder andere referentiebare scalaire typen en klassetypen met door compiler gegenereerde of door de gebruiker gedefinieerde operatoren voor verplaatsingstoewijzingen.
is_move_constructible
Test of het type een verplaatsingsconstructor heeft.
template <class T>
struct is_move_constructible;
Parameterwaarden
T
Het type dat moet worden geƫvalueerd
Opmerkingen
Een typepredicaat dat waar oplevert als het type T kan worden samengesteld met behulp van een verplaatsingsbewerking. Dit predicaat is gelijk aan is_constructible<T, T&&>.
is_nothrow_verplaatsbaar_toewijsbaar
Test of het type een nothrow verplaatsingstoewijzingsoperator heeft.
template <class Ty>
struct is_nothrow_move_assignable;
Parameterwaarden
Ty
Het type dat u wilt opvragen.
Opmerkingen
Een exemplaar van het typepredicaat geldt als het type Ty een toewijzingsoperator voor verplaatsing van nothrow heeft, anders is het onwaar.
is_nothrow_swappable
template <class T> struct is_nothrow_swappable;
is_nothrow_swappable_with
template <class T, class U> struct is_nothrow_swappable_with;
is_swappable
template <class T> struct is_swappable;
is_swappable_with
template <class T, class U> struct is_swappable_with;
is_triviaal_kopieerbaar_toewijzen
Test of het type een triviale kopieertoewijzingsoperator heeft.
template <class Ty>
struct is_trivially_copy_assignable;
Parameterwaarden
T
Het type dat u wilt opvragen.
Opmerkingen
Een exemplaar van het typepredicaat geldt als het type T een klasse is met een triviale kopieertoewijzingsoperator, anders is het onwaar.
Een toewijzingsconstructor voor een klasse T is triviaal als deze impliciet wordt opgegeven, de klasse T geen virtuele functies heeft, de klasse T geen virtuele bases heeft, de klassen van alle niet-statische gegevensleden van het klassetype hebben triviale toewijzingsoperatoren en de klassen van alle niet-statische gegevensleden van het type matrix van klasse hebben triviale toewijzingsoperatoren.
is_trivially_move_assignable
Test of het type een triviale verplaatsingstoewijzingsoperator heeft.
template <class Ty>
struct is_trivially_move_assignable;
Parameterwaarden
Ty
Het type dat u wilt opvragen.
Opmerkingen
Een exemplaar van het typepredicaat geldt als het type Ty een klasse is met een triviale verplaatsingstoewijzingsoperator, anders is het onwaar.
Een verplaatsingstoewijzingsoperator voor een klasse Ty is triviaal als:
deze wordt impliciet verstrekt
de klasse Ty heeft geen virtuele functies
de klasse Ty heeft geen virtuele bases
de klassen van alle niet-statische gegevensleden van het klassetype hebben triviale verplaatsingstoewijzingsoperatoren
de klassen van alle niet-statische gegevensleden van het type matrix van klasse hebben triviale verplaatsingstoewijzingsoperators
is_trivially_move_constructible
Test of het type een triviale verplaatsingsconstructor heeft.
template <class Ty>
struct is_trivially_move_constructible;
Parameterwaarden
Ty
Het type dat u wilt opvragen.
Opmerkingen
Een exemplaar van het typepredicaat geldt als het type Ty een klasse is met een triviale verplaatsingsconstructor, anders is het onwaar.
Een verplaatsingsconstructor voor een klasse Ty is triviaal als:
deze wordt impliciet gedeclareerd
de parametertypen zijn gelijk aan die van een impliciete declaratie
de klasse Ty heeft geen virtuele functies
de klasse Ty heeft geen virtuele bases
de klasse geen vluchtige niet-statische gegevensleden heeft
alle directe bases van de klasse Ty hebben triviale verplaatsingsconstructors
de klassen van alle niet-statische gegevensleden van het klassetype hebben triviale verplaatsingsconstructors
de klassen van alle niet-statische gegevensleden van het type matrix van klasse hebben triviale verplaatsingsconstructors