<type_traits>
işlevleri
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
Kimden türündeki bir değerin bir To türüne atanıp atanamayacağını sınar.
template <class To, class From>
struct is_assignable;
Parametreler
İşlem
Atamayı alan nesnenin türü.
Başlangıç
Değeri sağlayan nesnenin türü.
Açıklamalar
Değerlendirilmemiş ifade declval<To>() = declval<From>()
iyi biçimlendirilmiş olmalıdır. Hem Kimden hem de Kime tam türler, void
veya bilinmeyen bağlı diziler olmalıdır.
is_copy_assignable
Türün atamada kopyalanıp kopyalanamayacağını sınar.
template <class Ty>
struct is_copy_assignable;
Parametreler
Ty
Sorgulanacak tür.
Açıklamalar
Ty türü kopya atama işlecine sahip bir sınıfsa tür koşulunun bir örneği true değerini tutar, aksi takdirde false değerini tutar. is_assignable<Ty ile eşdeğer, sabit Ty&>.
is_copy_constructible
Türün bir kopya oluşturucus olup olmadığını sınar.
template <class Ty>
struct is_copy_constructible;
Parametreler
Ty
Sorgulanacak tür.
Açıklamalar
Ty türü bir kopya oluşturucuya sahip bir sınıfsa tür koşulunun bir örneği true tutar, aksi takdirde false tutar.
Örnek
#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
Bir türün varsayılan oluşturucus olup olmadığını sınar.
template <class Ty>
struct is_default_constructible;
Parametreler
T
Sorgulanacak tür.
Açıklamalar
Tür koşulunun bir örneği, T türü varsayılan oluşturucuya sahip bir sınıf türüyse true değerini tutar, aksi takdirde false değerini tutar. Bu, koşuluna is_constructible<T>
eşdeğerdir. T türü tam bir tür, void
veya bilinmeyen bir sınır dizisi olmalıdır.
Örnek
#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
Türün taşınıp atanamadığını test eder.
template <class T>
struct is_move_assignable;
Parametreler
T
Sorgulanacak tür.
Açıklamalar
Türe yönelik bir rvalue başvurusu, tür başvurusuna atanabiliyorsa, tür taşıma atanabilir. Tür koşulu ile is_assignable<T&, T&&>
eşdeğerdir. Atanabilir taşıma türleri, derleyici tarafından oluşturulan veya kullanıcı tanımlı taşıma atama işleçlerine sahip başvurulabilen skaler türleri ve sınıf türlerini içerir.
is_move_constructible
Türün taşıma oluşturucusunun olup olmadığını test eder.
template <class T>
struct is_move_constructible;
Parametreler
T
Değerlendirilecek tür
Açıklamalar
T türü taşıma işlemi kullanılarak oluşturulabiliyorsa true olarak değerlendirilen bir tür koşulu. Bu koşul ile is_constructible<T, T&&>
eşdeğerdir.
is_nothrow_move_assignable
Türün taşıma nothrow
atama işleci olup olmadığını sınar.
template <class Ty>
struct is_nothrow_move_assignable;
Parametreler
Ty
Sorgulanacak tür.
Açıklamalar
Ty türü bir nothrow taşıma atama işlecine sahipse tür koşulunun bir örneği true değerini tutar, aksi takdirde false değerini tutar.
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
Türün önemsiz bir kopya atama işleci olup olmadığını sınar.
template <class Ty>
struct is_trivially_copy_assignable;
Parametreler
T
Sorgulanacak tür.
Açıklamalar
T türü önemsiz bir kopya atama işlecine sahip bir sınıfsa tür koşulunun bir örneği true tutar, aksi takdirde false tutar.
Örtük olarak sağlanmışsa, T sınıfının sanal işlevleri yoksa, T sınıfının sanal temelleri yoksa, sınıf türünün tüm statik olmayan veri üyelerinin sınıflarının sınıflarında önemsiz atama işleçleri varsa ve sınıf dizisinin statik olmayan tüm veri üyelerinin sınıfları önemsiz atama işleçlerine sahipse, T sınıfı için atama oluşturucu önemsizdir.
is_trivially_move_assignable
Türün önemsiz bir taşıma atama işleci olup olmadığını sınar.
template <class Ty>
struct is_trivially_move_assignable;
Parametreler
Ty
Sorgulanacak tür.
Açıklamalar
Tür koşulunun bir örneği, Ty türü önemsiz bir taşıma atama işlecine sahip bir sınıfsa true değerini tutar, aksi takdirde false değerini tutar.
Ty sınıfı için taşıma atama işleci şu durumda önemsizdir:
örtük olarak sağlanır
Ty sınıfının sanal işlevi yok
Ty sınıfının sanal temelleri yok
sınıf türünün tüm statik olmayan veri üyelerinin sınıflarında önemsiz taşıma atama işleçleri vardır
sınıf türü dizisinin tüm statik olmayan veri üyelerinin sınıflarında önemsiz taşıma atama işleçleri vardır
is_trivially_move_constructible
Türün önemsiz taşıma oluşturucus olup olmadığını test eder.
template <class Ty>
struct is_trivially_move_constructible;
Parametreler
Ty
Sorgulanacak tür.
Açıklamalar
Ty türü önemsiz bir taşıma oluşturucuya sahip bir sınıfsa tür koşulunun bir örneği true tutar, aksi takdirde false tutar.
Ty sınıfı için taşıma oluşturucu şu durumda önemsizdir:
örtük olarak bildirilir
parametre türleri, örtük bildiriminkilerle eşdeğerdir
Ty sınıfının sanal işlevi yok
Ty sınıfının sanal temelleri yok
sınıfında geçici statik olmayan veri üyeleri yok
Ty sınıfının tüm doğrudan tabanları önemsiz taşıma oluşturucularına sahiptir
sınıf türünün tüm statik olmayan veri üyelerinin sınıflarında önemsiz taşıma oluşturucuları vardır
sınıf türü dizisinin tüm statik olmayan veri üyelerinin sınıflarında önemsiz taşıma oluşturucuları vardır