Aracılığıyla paylaş


<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, voidveya 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, voidveya 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

Ayrıca bkz.

<type_traits>