Aracılığıyla paylaş


<type_traits>

Tür bağımsız değişkenlerinin özellikleri hakkında bilgi veren veya dönüştürülmüş türler üreten derleme zamanı sabitleri için şablonları tanımlar.

Sözdizimi

#include <type_traits>

Açıklamalar

type_traits'deki <> sınıflar ve şablonlar derleme zamanında tür çıkarımını, sınıflandırmayı ve dönüşümü desteklemek için kullanılır. Bunlar, türle ilgili hataları algılamak ve genel kodunuzu iyileştirmenize yardımcı olmak için de kullanılır. Birli tür özellikleri bir türün özelliğini açıklar, ikili tür özellikleri türler arasındaki ilişkiyi tanımlar ve dönüştürme özellikleri bir türün özelliğini değiştirir.

Yardımcı sınıfı integral_constant ve şablon özelleştirmeleri true_type ve false_type tür önkoşulları için temel sınıfları oluşturur. Tür koşulu , bir veya daha fazla tür bağımsız değişkeni alan bir şablondur. Tür koşulu true değerini barındırdığında, doğrudan veya dolaylı olarak true_type genel olarak türetilir. Bir tür koşulu false değerini barındırdığında, false_type doğrudan veya dolaylı olarak genel olarak türetilir.

Tür değiştirici veya dönüştürme özelliği , bir veya daha fazla şablon bağımsız değişkeni alan ve değiştirilen türün eş anlamlısı olan bir üyesi typeolan bir şablondur.

Diğer Ad Şablonları

Tür özellikleri ifadelerini basitleştirmek için typename some_trait<T>::type için diğer ad şablonları sağlanır ve burada some_trait sınıf şablonu adıdır. Örneğin, add_const türü add_const_tiçin olarak tanımlanan bir diğer ad şablonu vardır:

template <class T>
using add_const_t = typename add_const<T>::type;

Üyeler için type sağlanan diğer adlar şunlardır:

add_const_t
add_cv_t
add_lvalue_reference_t
add_pointer_t
add_rvalue_reference_t
add_volatile_t
aligned_storage_t
aligned_union_t\

common_type_t
conditional_t
decay_t
enable_if_t
invoke_result_t
make_signed_t
make_unsigned_t
remove_all_extents_t\

remove_const_t
remove_cv_t
remove_extent_t
remove_pointer_t
remove_reference_t
remove_volatile_t
result_of_t
underlying_type_t\

Sınıflar

Yardımcı sınıf ve tür tanımları

Ad Tanım
integral_constant Bir tür ve değerden tamsayı sabiti yapar.
true_type Gerçek değerle tamsayı sabiti tutar.
false_type False değeriyle tamsayı sabiti tutar.

Birincil tür kategorileri

Ad Tanım
is_void türünün olup olmadığını sınar void.
is_null_pointer türünün olup olmadığını sınar std::nullptr_t.
is_integral Türün tam sayı olup olmadığını sınar.
is_floating_point Türün kayan nokta olup olmadığını sınar.
is_array Türün bir dizi olup olmadığını sınar.
is_pointer Türün işaretçi olup olmadığını sınar.
is_lvalue_reference Tür bir lvalue başvurusu olup olmadığını sınar.
is_rvalue_reference Türün bir rvalue başvurusu olup olmadığını sınar.
is_member_object_pointer Türün üye nesnesinin işaretçisi olup olmadığını sınar.
is_member_function_pointer Türün bir üye işlevinin işaretçisi olup olmadığını sınar.
is_enum Türün bir sabit listesi olup olmadığını sınar.
is_union Türün birleşim olup olmadığını sınar.
is_class Türün bir sınıf olup olmadığını sınar.
is_function Türün bir işlev türü olup olmadığını sınar.

Bileşik tür kategorileri

Ad Tanım
is_reference Türün bir başvuru olup olmadığını sınar.
is_arithmetic Türün aritmetik olup olmadığını sınar.
is_fundamental Türün void aritmetik olup olmadığını sınar.
is_object Türün bir nesne türü olup olmadığını sınar.
is_scalar Türün skaler olup olmadığını sınar.
is_compound Türün skaler olup olmadığını sınar.
is_member_pointer Türün bir üyenin işaretçisi olup olmadığını sınar.

Tür özellikleri

Ad Tanım
is_const türünün olup olmadığını sınar const.
is_volatile türünün olup olmadığını sınar volatile.
is_trivial Türün önemsiz olup olmadığını sınar.
is_trivially_copyable Türün önemsiz olarak kopyalanabilir olup olmadığını sınar.
is_standard_layout Türün standart bir düzen türü olup olmadığını sınar.
is_pod Türün pod olup olmadığını sınar.
is_literal_type Türün değişken olup olmadığını veya işlevde constexprconstexpr kullanılıp kullanılmadığını sınar.
is_empty Türün boş bir sınıf olup olmadığını sınar.
is_polymorphic Türün polimorfik bir sınıf olup olmadığını sınar.
is_abstract Türün soyut bir sınıf olup olmadığını sınar.
is_final Türün işaretli bir sınıf türü olup olmadığını sınar final.
is_aggregate
is_signed Türün imzalı bir tamsayı olup olmadığını sınar.
is_unsigned Türün işaretsiz bir tamsayı olup olmadığını sınar.
is_constructible Belirtilen bağımsız değişken türlerini kullanarak türün oluşturulduğunda olup olmadığını sınar.
is_default_constructible Türün varsayılan bir oluşturucusunun olup olmadığını sınar.
is_copy_constructible Türün bir kopya oluşturucusunun olup olmadığını sınar.
is_move_constructible Türün taşıma oluşturucusunun olup olmadığını test eder.
is_assignable İlk türün ikinci türe bir değer atanıp atanamayacağını sınar.
is_copy_assignable Bir türe türün sabit başvuru değerinin atanıp atanamayacağını sınar.
is_move_assignable Bir türe türün rvalue başvurusu atanıp atanamayacağını sınar.
is_swappable
is_swappable_with
is_destructible Türün yok edilebilir olup olmadığını sınar.
is_trivially_constructible Türün belirtilen türler kullanılarak oluşturulduğunda önemsiz olmayan işlemler kullanıp kullanmadığını sınar.
is_trivially_default_constructible Türün varsayılan olarak oluşturulduğunda önemsiz olmayan işlemler kullanıp kullanmadığını sınar.
is_trivially_copy_constructible Kopyalama oluşturulduğunda türün önemsiz olmayan işlemler kullanıp kullanmadığını sınar.
is_trivially_move_constructible Taşıma oluşturulduğunda türün önemsiz olmayan işlemler kullanıp kullanmadığını test eder.
is_trivially_assignable Türlerin atanabilir olup olmadığını ve atamanın önemsiz olmayan işlemler kullanmadığını sınar.
is_trivially_copy_assignable Türün kopya atanabilir olup olmadığını sınar ve atama önemsiz olmayan işlemler kullanmaz.
is_trivially_move_assignable Türün taşıma atanabilir olup olmadığını test eder ve atama önemsiz olmayan işlemler kullanmaz.
is_trivially_destructible Türün yok edilebilir olup olmadığını sınar ve yıkıcı önemsiz olmayan işlemler kullanmaz.
is_nothrow_constructible Türün yapılı olup olmadığını ve belirtilen türler kullanılarak oluşturulduğunda atılmayacağı bilinip bilinmediğini test eder.
is_nothrow_default_constructible Türün varsayılan olarak oluşturulduğunda atılmayacağı bilinip bilinmediğini test eder.
is_nothrow_copy_constructible Türün kopya yapıcı olup olmadığını ve kopya oluşturucunun oluşturmadığı bilinip bilinmediğini test eder.
is_nothrow_move_constructible Türün move constructible olup olmadığını test eder ve taşıma oluşturucusunun oluşturmadığı bilinir.
is_nothrow_assignable Türün belirtilen tür kullanılarak atanabilir olup olmadığını test eder ve atamanın atılmayacağı bilinir.
is_nothrow_copy_assignable Türün kopya atanabilir olup olmadığını ve atamanın atılmadığını sınar.
is_nothrow_move_assignable Türün taşıma atanabilir olup olmadığını ve atamanın atılmadığını sınar.
is_nothrow_swappable
is_nothrow_swappable_with
is_nothrow_destructible Türün yok edilebilir olup olmadığını ve yıkıcının oluşturmadığı bilinip bilinmediğini test eder.
has_virtual_destructor Türün sanal yıkıcısı olup olmadığını sınar.
has_unique_object_representations
is_invocable Belirtilen bağımsız değişken türleri kullanılarak çağrılabilir bir türün çağrılıp çağrılamayacağını test edin.
C++17'ye eklendi.
is_invocable_r Çağrılabilir bir türün belirtilen bağımsız değişken türleri kullanılarak çağrılabildiğini ve sonucun belirtilen türe dönüştürülebilir olup olmadığını sınar.
C++17'ye eklendi.
is_nothrow_invocable Çağrılabilir bir türün belirtilen bağımsız değişken türleri kullanılarak çağrılıp çağrılamayacağını sınar ve özel durumlar oluşturmadığı bilinir.
C++17'ye eklendi.
is_nothrow_invocable_r Çağrılabilir bir türün belirtilen bağımsız değişken türleri kullanılarak çağrılabilir olup olmadığını test eder ve özel durumlar oluşturmadığı bilinir ve sonuç belirtilen türe dönüştürülebilir.
C++17'ye eklendi.

Tür özelliği sorguları

Ad Tanım
alignment_of Bir türün hizalamasını alır.
Rütbe Dizi boyutlarının sayısını alır.
Kapsam Belirtilen dizi boyutundaki öğelerin sayısını alır.

Tür ilişkileri

Ad Tanım
is_same İki türün aynı olup olmadığını sınar.
is_base_of Bir türün başka bir türün tabanı olup olmadığını sınar.
is_convertible Bir türün başka bir türe dönüştürülebilir olup olmadığını sınar.

Geçici değişiklikler

Ad Tanım
add_const Türünden bir const tür oluşturur.
add_volatile Türünden bir volatile tür oluşturur.
add_cv Türünden bir const volatile tür oluşturur.
remove_const Türünden sabit olmayan bir tür oluşturur.
remove_volatile Türünden geçici olmayan bir tür üretir.
remove_cv Türünden sabit olmayan geçici olmayan bir tür oluşturur.

Başvuru değişiklikleri

Ad Tanım
add_lvalue_reference Türünden türe bir başvuru oluşturur.
add_rvalue_reference Türünden türe bir rvalue başvurusu oluşturur
remove_reference Türünden başvuru olmayan bir tür oluşturur.

değişiklikleri imzala

Ad Tanım
make_signed İmzalıysa türü veya en küçük imzalı türü, türün boyutundan büyük veya eşit olur.
make_unsigned İşaretsizse türü veya en küçük imzasız türün boyutu büyük veya bu değere eşit olur.

Dizi değişiklikleri

Ad Tanım
remove_all_extents Bir dizi türünden dizi olmayan bir tür üretir.
remove_extent Öğe türünü bir dizi türünden üretir.

İşaretçi değişiklikleri

Ad Tanım
add_pointer Türünden yazmak için bir işaretçi oluşturur.
remove_pointer İşaretçiden türe bir tür oluşturur.

Diğer dönüştürmeler

Ad Tanım
aligned_storage Hizalanmış bir tür için başlatılmamış bellek ayırır.
aligned_union Önemsiz olmayan bir oluşturucu veya yıkıcı ile hizalanmış bir birleşim için başlatılmamış bellek ayırır.
common_type Parametre paketinin tüm türlerinin ortak türünü üretir.
Koşullu Koşul true ise, belirtilen ilk türü, aksi halde ikinci belirtilen türü üretir.
Çürüme Türü değere göre geçirildi olarak üretir. Başvuru olmayan, sabit olmayan veya geçici olmayan bir tür yapar ya da tür işaretçisi yapar.
enable_if Koşul true ise, belirtilen türü üretir, aksi takdirde hiçbir tür.
invoke_result Belirtilen bağımsız değişken türlerini alan çağrılabilen türün dönüş türünü belirler.
C++17'ye eklendi.
result_of Belirtilen bağımsız değişken türlerini alan çağrılabilen türün dönüş türünü belirler.
C++14'te eklendi, C++17'de kullanım dışı bırakıldı.
underlying_type Bir numaralandırma türü için temel integral türünü üretir.

Mantıksal işleç özellikleri

Ad Tanım
Birlikte
Disjunction
Negatiflik

Ayrıca bkz.

<Işlevsel>