Delen via


<type_traits> functies

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

Zie ook

<type_traits>