Şablonlarda ve auto'da Concepts Kullanımı
İşlev şablonlarını ve kısaltılmış işlev şablonlarını concepts ile kısıtlayın
Şablonlarda ve auto'da Concepts Kullanımı, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Üç Sözdiziminin Özeti
Bir kavramı üç şekilde uygulayabilirsiniz: şablon parametresi öneki olarak, bir requires yan tümcesi olarak veya kısaltılmış işlev şablonu sözdizimiyle.
Önek Sözdizimi
typename yerine kavram adını kullanın.
template <std::integral T>
T add(T a, T b) { return a + b; }requires Yan Tümcesi Sözdizimi
Şablon parametresi listesinden sonra requires ekleyin. En esnek seçenektir; karmaşık koşulları destekler.
template <typename T>
requires std::integral<T> || std::floating_point<T>
T add(T a, T b) { return a + b; }Sondaki requires Yan Tümcesi
requires ifadesini işlev imzasından sonra yerleştirin; kısıtın parametrelere bağlı olduğu üye işlevlerde kullanışlıdır.
template <typename T>
class Container {
public:
void sort() requires std::sortable<T> { /* ... */ }
};Kısaltılmış İşlev Şablonları
Parametrelerde auto kullanın ve onu kısıtlayın. Derleyici, şablonu arka planda oluşturur.
void greet(std::convertible_to<std::string> auto name) {
std::cout << "Hello " << name;
}Birden Çok auto Parametresi
Her auto parametresinin kendi kavramı olabilir. Her auto, bağımsız bir şablon parametresi oluşturur.
auto multiply(std::integral auto a, std::integral auto b) {
return a * b;
}Sınıf Şablonlarıyla Kavramlar
Aynı üç sözdizimi geçerlidir.
template <std::movable T>
class Buffer { /* ... */ };
template <typename T>
requires std::default_initializable<T>
class Storage { /* ... */ };Kısıtlanmış Lambda'lar (C++20)
Lambda'ların kavramları kullanan açık şablon parametreleri olabilir.
auto print = []<std::integral T>(T x) {
std::cout << x << " is integral";
};
print(42);Kavram Tabanlı Aşırı Yük Çözümleme
Derleyici, eşleşen en kısıtlı aşırı yüklemeyi seçer. Daha özel kavramlar, daha az özel kavramlara üstün gelir.
void process(std::integral auto x) { std::cout << "int\n"; }
void process(std::signed_integral auto x) { std::cout << "signed\n"; }
process(42); // calls signed_integral versionKısıtlanmış Üye İşlevler
Bir sınıf şablonunun üyelerinin kendi kısıtları olabilir.
template <typename T>
class Optional {
T value_;
public:
void clear() requires std::is_trivially_destructible_v<T> { /* fast */ }
void clear() { /* general */ }
};Varsayılan Başlatmalı Kısıtlı Türler
Düzenli ve amacı açıkça belirten şablonlar yazmak için requires ifadelerini varsayılan değerlerle birleştirin.
Stil Kılavuzu
Yaygın durumlarda önek sözdizimini kullanın. Kısıtlar karmaşık olduğunda veya birden çok tür içerdiğinde requires sözdizimine geçin. Kısa ve belirli amaçlı işlevler için kısaltılmış işlev şablonlarını kullanın.
Hızlı Kontrol
“Herhangi bir tamsayı değerini alan bir işlev” için kısaltılmış işlev şablonu sözdizimi nedir?
Özet
Kavramları önek olarak, requires yan tümcelerinde veya kısaltılmış işlev şablonlarında uygulayın. Eşleşen en kısıtlı aşırı yükleme seçilir. Duruma uygun en sade sözdizimini kullanın: basit durumlar için önek, karmaşık durumlar için requires, kısa işlevler için kısaltılmış sözdizimi.
Sıkça Sorulan Sorular
“Şablonlarda ve auto'da Concepts Kullanımı” dersi ücretsiz mi?
Evet — “Şablonlarda ve auto'da Concepts Kullanımı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Şablonlarda ve auto'da Concepts Kullanımı” dersinde ne öğreneceğim?
İşlev şablonlarını ve kısaltılmış işlev şablonlarını concepts ile kısıtlayın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Şablonlarda ve auto'da Concepts Kullanımı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Concepts ve SFINAE Neden Karşılaştırılır
- requires ile Concepts Tanımlama
- Şablonlarda ve auto'da Concepts Kullanımı
- Yaygın Standart Concepts: Integral, Ranges