Ana içeriğe geç
Programlama

C++26 sözleşme kontrolleriyle ön ve son koşulları dile ekliyor

Öne çıkanlar

  • C++26 sözleşmeleri pre, post ve contract_assert sözdizimleriyle fonksiyon kurallarını tanımlıyor.
  • GCC 16, -fcontracts bayrağıyla sözleşme desteğini sunan ilk derleyici oldu.
  • Sözleşmeler ignore, observe, enforce ve quick-enforce olmak üzere dört farklı semantikle değerlendiriliyor.

C++26 standardı, P2900 teklifi kapsamında sözleşmeler (contracts) mekanizmasını dile kazandırıyor. Geleneksel cassert kullanımının yerine geçen bu yeni sözdizimi, fonksiyonların gereksinimlerini doğrudan bildirimlere taşıyor. Geliştiriciler bu sayede fonksiyon girişindeki gereksinimleri pre ile dönüş değerine ilişkin garantileri ise post anahtar sözcüğüyle açıkça tanımlayabiliyor.

Yeni sistem sözleşmelerin çalışma zamanındaki davranışını derleyici seviyesinde yönetilen dört farklı semantik üzerinden sunuyor. Bu seçenekler ignore, observe, enforce ve quick-enforce olarak sıralanıyor. İhlal durumunda çağrılan varsayılan işleyici değiştirilebiliyor ve std::contracts::contract_violation nesnesi aracılığıyla hatanın yeri ve türü gibi ayrıntılı tanı bilgileri raporlanıyor.

Ekim 2026 itibarıyla GCC 16 derleyicisi bu özelliği deneysel parametrelerle destekleyen ilk derleyici oldu. Standart gereği sözleşme ifadeleri girdi doğrulama veya akış denetimi yerine geçmiyor; ayrıca yan etkilerden kaçınmak amacıyla önkoşul parametreleri üzerinde değiştirme işlemlerine derleme aşamasında izin verilmiyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.