Starting from C++14 we have that: A value-initialized ForwardIterator behaves like the past-the-end iterator of some unspecified empty container: it compares equal to all value-initialized ForwardIterators of the same type. This answer on SO explains this well: Forward iterators and stronger are generally just a lightweight handle onto something…
Using variadic templates cleanly
Great article on effective variadic templates techniques.…
`std::array` is an aggregate
The problem Consider the following type aliasing: template<std::size_t N> using square_matrix = std::array< std::array<int, N>, N>; Intuitively, one may try to use brace-initialization as follows: square_matrix<3> m = { {1, 2, 3}, {4, 5, 6}, {7,…
New value terminology
In this article, Stroustrup explains the origin of the terms glvalue, prvalue and xvalue. Why not LaTeX, btw :-) ?…
On the relationship between special functions
Prior to C++11, all of the special members functions were totally independent. If you declare or don’t declare any one of the default constructor, the copy constructor, the copy assignment operator, or the destructor, that has no effect whatsoever on the other three. But when C++11 introduced…