Bagikan melalui


Fungsi <type_traits>

is_assignable
is_copy_assignable
is_copy_constructible
is_default_constructible
is_move_assignable
is_move_constructible
is_nothrow_move_assignable
is_nothrow_swappable
is_nothrow_swappable_with
is_swappable
is_swappable_with
is_trivially_copy_assignable
is_trivially_move_assignable
is_trivially_move_constructible

is_assignable

Menguji apakah nilai Dari jenis dapat ditetapkan ke jenis Kepada.

template <class To, class From>
struct is_assignable;

Parameter

Untuk
Jenis objek yang menerima penugasan.

Dari
Jenis objek yang menyediakan nilai .

Keterangan

Ekspresi declval<To>() = declval<From>() yang tidak dievaluasi harus terbentuk dengan baik. Dari dan Ke harus berupa jenis lengkap, void, atau array dari batas yang tidak diketahui.

is_copy_assignable

Menguji apakah jenis telah dapat disalin pada penugasan.

template <class Ty>
struct is_copy_assignable;

Parameter

Ty
Jenis yang akan dikueri.

Keterangan

Instans predikat jenis memegang true jika jenis Ty adalah kelas yang memiliki operator penugasan salinan, jika tidak, itu menyimpan false. Setara dengan is_assignable<Ty&, const Ty&>.

is_copy_constructible

Menguji apakah jenis memiliki konstruktor salinan.

template <class Ty>
struct is_copy_constructible;

Parameter

Ty
Jenis yang akan dikueri.

Keterangan

Instans predikat jenis memegang true jika jenis Ty adalah kelas yang memiliki konstruktor salinan, jika tidak, itu menyimpan false.

Contoh

#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_default_constructible

Menguji apakah jenis memiliki konstruktor default.

template <class Ty>
struct is_default_constructible;

Parameter

T
Jenis yang akan dikueri.

Keterangan

Instans predikat jenis memegang true jika jenis T adalah jenis kelas yang memiliki konstruktor default, jika tidak, itu menyimpan false. Ini setara dengan predikat is_constructible<T>. Tipe T harus berupa jenis lengkap, void, atau array yang tidak diketahui terikat.

Contoh

#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

Menguji apakah jenis dapat dipindahkan ditetapkan.

template <class T>
struct is_move_assignable;

Parameter

T
Jenis yang akan dikueri.

Keterangan

Jenis dapat ditetapkan jika referensi rvalue ke jenis dapat ditetapkan ke referensi ke jenis . Predikat jenis setara dengan is_assignable<T&, T&&>. Memindahkan jenis yang dapat ditetapkan termasuk jenis skalar yang dapat dirujuk dan jenis kelas yang memiliki operator penetapan pemindahan yang dihasilkan kompilator atau yang ditentukan pengguna.

is_move_constructible

Menguji apakah jenis memiliki konstruktor pemindahan.

template <class T>
struct is_move_constructible;

Parameter

T
Jenis yang akan dievaluasi

Keterangan

Predikat jenis yang mengevaluasi ke true jika jenis T dapat dibangun dengan menggunakan operasi pemindahan. Predikat ini setara dengan is_constructible<T, T&&>.

is_nothrow_move_assignable

Menguji apakah jenis memiliki nothrow operator penetapan pemindahan.

template <class Ty>
struct is_nothrow_move_assignable;

Parameter

Ty
Jenis yang akan dikueri.

Keterangan

Instans predikat jenis memegang true jika jenis Ty memiliki operator penetapan pemindahan nothrow, jika tidak, itu menyimpan false.

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_trivially_copy_assignable

Menguji apakah jenis memiliki operator penetapan salinan sepele.

template <class Ty>
struct is_trivially_copy_assignable;

Parameter

T
Jenis yang akan dikueri.

Keterangan

Instans predikat jenis memegang true jika jenis T adalah kelas yang memiliki operator penetapan salinan sepele, jika tidak, itu menyimpan false.

Konstruktor penugasan untuk kelas T sepele jika disediakan secara implisit, kelas T tidak memiliki fungsi virtual, kelas T tidak memiliki basis virtual, kelas semua anggota data non-statis dari jenis kelas memiliki operator penugasan sepele, dan kelas semua anggota data non-statis dari array jenis kelas memiliki operator penugasan sepele.

is_trivially_move_assignable

Menguji apakah jenis memiliki operator penetapan pemindahan yang sepele.

template <class Ty>
struct is_trivially_move_assignable;

Parameter

Ty
Jenis yang akan dikueri.

Keterangan

Instans predikat jenis memegang true jika jenis Ty adalah kelas yang memiliki operator penetapan pemindahan sepele, jika tidak, itu menyimpan false.

Operator penetapan pemindahan untuk kelas Ty sepele jika:

secara implisit disediakan

kelas Ty tidak memiliki fungsi virtual

kelas Ty tidak memiliki basis virtual

kelas semua anggota data non-statis dari jenis kelas memiliki operator penetapan pemindahan yang sepele

kelas semua anggota data non-statis dari jenis array kelas memiliki operator penetapan pemindahan yang sepele

is_trivially_move_constructible

Menguji apakah jenis memiliki konstruktor pemindahan sepele.

template <class Ty>
struct is_trivially_move_constructible;

Parameter

Ty
Jenis yang akan dikueri.

Keterangan

Instans predikat jenis memegang true jika jenis Ty adalah kelas yang memiliki konstruktor pemindahan sepele, jika tidak, itu menyimpan false.

Konstruktor pemindahan untuk kelas Ty sepele jika:

secara implisit dinyatakan

jenis parameternya setara dengan jenis deklarasi implisit

kelas Ty tidak memiliki fungsi virtual

kelas Ty tidak memiliki basis virtual

kelas tidak memiliki anggota data non-statis yang volatil

semua basis langsung kelas Ty memiliki konstruktor pemindahan sepele

kelas semua anggota data non-statis dari jenis kelas memiliki konstruktor pemindahan sepele

kelas semua anggota data non-statis dari jenis array kelas memiliki konstruktor pemindahan sepele

Lihat juga

<type_traits>