<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 type
olan 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_t
iç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ı
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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 constexpr constexpr 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ı
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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
Veri Akışı Adı | Açıklama |
---|---|
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ümek | 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
Veri Akışı Adı | Açıklama |
---|---|
bağlaç | |
Disjunction | |
olumsuzluk |