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