Today’s post is the first guest post on this blog. Jonathan Boccara tells us about some exciting features that will hit the standard library after C++17: Ranges. Jonathan develops and teaches […]
With the increasing standardization of attributes, we get the opportunity to make our code clearer not only to other humans but also to the compiler and other tools.
Trailing return types are an oddity in C++ – we should use them only when necessary.
I gave an introduction to variadic templates last week. Today I will talk about some more features that have or will be added in that area in C++11, 14 and […]
Generic programming and metaprogramming with templates always have been one of the features that set C++ apart from most other languages. With C++11, variadic templates added even more possibilities in […]
User-defined literals are a convenient feature added in C++11.
In the last two weeks I have written about the basics of compile time constants and calculation with those constants. This week I conclude this mini series with the keyword […]
Covariance can be a useful concept, e.g. when implementing the abstract factory design pattern. However, in modern C++, we should return smart pointers that are not recognized to be covariant like […]
Move constructors are often cheaper than copy constructors, which makes the construction and immediate relocation of objects in modern C++ more effective than in C++03. However, just moving the parts needed to construct the object in the right place can be even more effective. Several standard library functionalities use perfect forwarding to construct objects right where they are needed.
I have written about handling exceptions some time ago, and about the levels of exception safety last week. What I have not touched yet are exception specifications. I will catch […]