RAII (Resource Acquisition Is Initialization idiom) - 1

Aşağıda gördüğümüz kod geleneksel kaynak erişim ve kaynakların iade edilmesine ilişkin bir örnek senaryodur. Burda 1 numaralı alanda kaynaklar ediniliyor sonra bu kaynaklarla belirli işlemler gerçekleştiriliyor ve ardından 2 numaralı alanda kaynaklar iade ediliyor.  Burada 2 tane senaryoya dikkat...

RTTI | Run-Time Type Information - 1

RTTI, Run-Time Type Information'ın kısaltmasıdır. Çalışma zamanında tür bilgisinin elde edilmesi anlamına gelmektedir. Bunun için ilgili türlerin polimorfik olması gerekmektedir.  Bir türün polimorfik olması için en az bir tane kendisinde veya base türünde virtual bir metodun tanımlanmış olması...

Metaprogramming | Variadic Templates & Fold Expressions - 1

C++11 değişken parametreli şablonları desteklemektedir. Dile gelen bu araçla birlikte hem sınıf şablonları (class templates) hem de fonksiyon şablonları (function templates) artık istenen sayıda parametreye sahip olabiliyor. Değişken sayıda parametreye "parametre paketi" (parameter pack) deniyor. Bir...

Metaprogramming | basic implementation of std::enable_if and SFINAE - 1

std::enable_if C++11 ile hayatımıza giren bir özellik ve Metaprogramming yapılırken SFINAE olarak bilinen idiyomun en önemli kullanım senaryosunu oluşturmaktadır. std::enable_if'in olası implementasyonu aşağıdaki gibidir.Burada kritik nokta birinci template için sınıfın içinde hiç bir bildirim yapılmazken...

ADL (Argument Dependent Lookup) - 1

14:35 ,
Compiler isim araması yaparken bulunduğu isim alanı ve global isim alanı dışında fonksiyon parametresine bağlı olarak bir arama daha yapmaktadir.Yukaridaki en temel Argument Dependent Lookup örneğinde görebileceginiz üzere normalde alert() fonksiyonu baska bir isim alanı içerisinde olsa da fonksiyonun...

C++ Idioms | Attorney Client Idiom - 1

C++ için önemli idiomlardan biri de Attorney Client Idiom olarak isimlendirilen idiomdur. Temel olarak nesne yönelimli programlamanın önemli ilkelerinden birisi olan encapsulation'ı bozabilecek durumları ortadan kaldırmak için geliştirilmistir. Encapsulation ilkesinin temeli verinin bütünlüğünü...

CTAD (Class Template Argument Deduction)

CTAD (Class Template Argument Deduction); template fonksiyonlara ilişkin deduction guide line gibi sınıflar için de benzer şekilde C++17 ile standartlara gelmiştir. Bu sayede sınıflara ilişkin doğrudan explicit olarak belirtmeye gerek kalmadan bu görevi de compiler' a havale edilmesi sağlanmıştır. Ve...

C++ Style Guide | AAA (Almost Always Auto)

Modern C++'ile birlikte soldan sağa doğru bir bildirim stilinde değişme görülmeye başlanmıştır.Bu değişimin sebebi C++11 ile gelen auto anahtar sözcüğüdür. Bu değişim artık bildirimlerin sol tarafinda sadece auto' nun yer almasını ve diger tüm bildirimleri sağ tarafa aktarmak  şeklinde...

Metaprogramming | basic implementation of std::is_integral

std::is_integral metaprogramming sırasında verinin bir türe ait olup olmadığına ilişkin kısıtlama yapılmak istendiğinde kullanılan bir araçtır.Yukarıdaki 26 satırdaki ifadeden dolayı aşağıdaki gibi compile sürecinde static_assert hatasına neden olacaktır.Bu satırı kaldırırsanız aşağıdaki gibi bir çıktı...