Menggunakan Concepts dalam Template dan auto
Batasi template fungsi dan template fungsi singkat dengan concepts
Menggunakan Concepts dalam Template dan auto adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Ringkasan Tiga Sintaks
Anda dapat menerapkan konsep dengan tiga cara: sebagai awalan parameter templat, sebagai klausa requires, atau dengan sintaks templat fungsi singkat.
Sintaks Awalan
Ganti typename dengan nama konsep.
template <std::integral T>
T add(T a, T b) { return a + b; }Sintaks Klausa requires
Tambahkan requires setelah daftar parameter templat. Paling fleksibel — mendukung kondisi yang kompleks.
template <typename T>
requires std::integral<T> || std::floating_point<T>
T add(T a, T b) { return a + b; }Klausa requires di Akhir
Tempatkan requires setelah tanda tangan fungsi — berguna pada fungsi anggota ketika batasannya bergantung pada parameter.
template <typename T>
class Container {
public:
void sort() requires std::sortable<T> { /* ... */ }
};Templat Fungsi Singkat
Gunakan auto pada parameter dan beri batasan. Kompilator membuat templat secara otomatis di balik layar.
void greet(std::convertible_to<std::string> auto name) {
std::cout << "Hello " << name;
}Beberapa Parameter auto
Setiap auto dapat memiliki konsepnya sendiri. Setiap auto membuat parameter templat yang independen.
auto multiply(std::integral auto a, std::integral auto b) {
return a * b;
}Konsep dengan Templat Kelas
Ketiga sintaks tersebut juga berlaku.
template <std::movable T>
class Buffer { /* ... */ };
template <typename T>
requires std::default_initializable<T>
class Storage { /* ... */ };Lambda dengan Batasan (C++20)
Lambda dapat memiliki parameter templat eksplisit dengan konsep.
auto print = []<std::integral T>(T x) {
std::cout << x << " is integral";
};
print(42);Resolusi Overload Berbasis Konsep
Kompilator memilih overload dengan batasan paling ketat yang cocok. Konsep yang lebih spesifik mengalahkan konsep yang kurang spesifik.
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 versionFungsi Anggota dengan Batasan
Anggota templat kelas dapat memiliki batasannya sendiri.
template <typename T>
class Optional {
T value_;
public:
void clear() requires std::is_trivially_destructible_v<T> { /* fast */ }
void clear() { /* general */ }
};Tipe dengan Batasan dan Inisialisasi Bawaan
Gabungkan requires dengan nilai bawaan untuk menulis templat yang bersih dan mengungkapkan maksudnya.
Panduan Gaya
Gunakan sintaks awalan untuk kasus umum. Beralihlah ke requires ketika batasannya kompleks atau melibatkan beberapa tipe. Gunakan templat fungsi singkat untuk fungsi yang pendek dan terfokus.
Pemeriksaan Singkat
Apa sintaks templat fungsi singkat untuk "fungsi yang menerima nilai bilangan bulat apa pun"?
Ringkasan
Terapkan konsep sebagai awalan, dalam klausa requires, atau dalam templat fungsi singkat. Overload yang cocok dengan batasan paling ketat akan dipilih. Gunakan sintaks terbersih yang sesuai — awalan untuk kasus sederhana, requires untuk kasus kompleks, dan sintaks singkat untuk fungsi pendek.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menggunakan Concepts dalam Template dan auto” gratis?
Ya — teks lengkap “Menggunakan Concepts dalam Template dan auto” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menggunakan Concepts dalam Template dan auto”?
Batasi template fungsi dan template fungsi singkat dengan concepts Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Menggunakan Concepts dalam Template dan auto” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa Concepts vs SFINAE
- Mendefinisikan Concepts dengan requires
- Menggunakan Concepts dalam Template dan auto
- Concepts Standar: Integral dan Rentang