C++ terus berkembang lewat standar baru setiap tiga tahun. Kita menelusuri fitur penting dari C++11 hingga C++23 serta prospek C++26, sehingga dapat memilih fitur yang tepat dan menulis kode modern tanpa terjebak gaya lama.

# Panorama C++11

Peta fitur C++11 yang membuka era modern C++: auto, range-based for, lambda, smart pointer, move semantics, nullptr, uniform initialization, dan constexpr.

Buka →
# Fitur C++14

C++14 memoles C++11: generic lambda, return type deduction, binary literal, digit separator, [[deprecated]], dan relaxed constexpr.

Buka →
# Fitur C++17

C++17: structured bindings, if constexpr, if/switch dengan initializer, std::optional/variant/any, inline variables, fold expressions, [[nodiscard]], dan string_view.

Buka →
# Fitur C++20

C++20: concepts, ranges, three-way comparison, span, format, jthread, designated initializers, plus pengantar coroutines dan modules.

Buka →
# Fitur C++23

C++23: std::print/println, std::expected, deducing this, multidimensional subscript, std::generator, static operator(), if consteval, dan std::mdspan.

Buka →
# Fitur C++26 dan Status Dukungan

Isi C++26 (reflection, contracts, std::hive, std::inplace_vector, pack indexing, placeholder _), status standar Maret 2026, dan cara mengecek dukungan compiler dengan feature-test macro.

Buka →
# Uniform Initialization

Sintaks {} untuk semua tipe: menolak narrowing, aggregate init, jebakan constructor std::initializer_list (vector{3} vs vector(3)), dan most vexing parse yang terselesaikan.

Buka →
# auto dan Type Deduction

Aturan deduksi auto untuk variabel, kembalian, dan parameter, ditambah decltype, decltype(auto), dan structured bindings sebagai keluarga auto.

Buka →
# range-based for

Pendalaman range-based for: perluasan yang dibangun compiler, init-statement C++20, umur temporary yang berbahaya, dan cara membuat class sendiri mendukung loop ini.

Buka →
# Lambda Modern

Fitur lambda era modern: init-capture dan move-capture (C++14), template parameter lambda (C++20), mutable, dan immediately-invoked lambda.

Buka →
# Move Semantics

Konsep move semantics secara pragmatis: perbedaan copy dan move, peran std::move, kapan move terjadi otomatis, dan aturan pakai di kode sehari-hari.

Buka →
# Perfect Forwarding

Meneruskan argumen dari wrapper generik tanpa salinan ekstra: forwarding reference T&&, deduksi lvalue vs rvalue, std::forward, dan pola emplace-style.

Buka →
# Structured Bindings

Pendalaman structured bindings: membongkar struct, std::tuple, dan std::array, aturan by value versus referensi, dan use case iterasi std::map.

Buka →
# Attributes pada Deklarasi

Tur atribut standar C++ pada deklarasi: nodiscard, maybe_unused, deprecated, fallthrough, likely dan unlikely, no_unique_address, serta atribut khusus compiler.

Buka →
# if constexpr

Cabang yang dipilih compiler saat kompilasi: satu template untuk banyak tipe tanpa tag dispatch maupun SFINAE, berpasangan dengan type traits.

Buka →
# Concepts dan Ranges

Sinergi dua fitur C++20: concepts menjaga syarat tipe, ranges menyediakan algoritma ter-constrain dan pipeline view — ditulis sekali, divalidasi compiler.

Buka →
# Coroutines: Pengantar

Konsep coroutine dengan co_yield, co_await, dan co_return — serta std::generator C++23 untuk deret malas tanpa menulis promise type sendiri.

Buka →
# Modules: Pengantar

Fitur C++20 yang menggantikan header tradisional: masalah #include, sintaks export module dan import, keuntungan, status dukungan compiler, serta strategi migrasi bertahap.

Buka →
# Menulis C++ Modern

Ringkasan gaya penulisan C++ modern — auto, structured bindings, uniform init, smart pointer, ranges, concepts, const, constexpr — dibuktikan lewat refactor nyata dari kode lama ke kode modern.

Buka →