C++20 modülleri, C önişlemcisinin (#include) yerini alarak C++ geliştirme sürecine önemli bir yenilik getiriyor. Geliştiricilerin uzun süredir aradığı daha temiz ve kapsüllenmiş bir dil yapısı sunan modüller, kütüphanelerin (Qt, cv, std gibi) daha düzenli bir şekilde yönetilmesini sağlıyor. Artık C++ kodunda anlamlı bir kullanım için önişlemci direktiflerine bağımlılık ortadan kalkıyor, bu da daha modern ve hatasız bir geliştirme deneyiminin kapılarını aralıyor. Modüller, kodun derlenme süresini azaltırken, isim çakışmalarını önleyerek daha güvenli bir ortam sunuyor.
Modül kullanımı oldukça basit: import std; ile bir modülü içe aktarabilir, export module dsa; ile kendi modülünüzü oluşturabilirsiniz. Temel terimler arasında "çeviri birimi" (bir .cpp dosyası gibi), "modül birimi" (bir modülü bildiren bir veya daha fazla çeviri birimi) ve "dışa aktarma bildirimleri" (modül kullanıcıları tarafından içe aktarılabilen sınıflar, fonksiyonlar gibi öğeler) yer alıyor. Modüller, dışa aktarılan öğeleri açıkça belirtme zorunluluğu getirerek API yüzeyini netleştiriyor.
Alt modüller kavramı, derleyici açısından doğrudan bir karşılığa sahip olmasa da (örneğin dsa.rbtree, dsa'dan bağımsız bir modül olarak kabul edilir), bu durum büyük modül birimlerinin yönetimini zorlaştırabilir. Bu sorunu çözmek için "modül bölümleri" (module partitions) devreye giriyor. Modül bölümleri, yalnızca kendi adlandırılmış modülleri ve aynı modül altındaki diğer bölümler tarafından içe aktarılabilen özel modül birimleridir. Bu sayede, bir kütüphanenin içindeki özel yapılar (örneğin bir Node sınıfı) modül dışına sızmadan farklı bölümler arasında güvenli bir şekilde paylaşılabilir. Bu yapı, geriye dönük uyumlulukla birlikte C++ ekosistemine entegre oluyor.
C++20 modülleri, modern C++ geliştirme pratiklerini kökten değiştirerek daha temiz, güvenli ve verimli bir kod tabanı oluşturma potansiyeli sunuyor.