C++C++11C++14C++17Iterators

The Move Iterator Adapter in C++

The dereference prefix operator * being applied to iterator returns the lvalue reference to the element pointed by the iterator. Therefore, algorithms such as std::copy or std::transform calls copying constructors of processed elements, for example: #include <algorithm> #include <list> #include <string> #include <vector> auto deep_copy_to_list(const…
Read more
C++C++11C++14C++17IteratorsLearn C++

Introduction to C++ Iterators

Iterator abstracts the concept of pointer to the sequence in range [begin, end), and thus provides the following basic operations: dereference to obtain the current element;movement to point the next element;comparison to determine at least the end of sequence. Iterator to the element of the sequence in range [begin, end) is valid from the moment of initialization and until: the moment it…
Read more
C++11C++14C++17Learn C++Templates

Stages of C++ Templates Compilation On Windows

In order to compile C++ templates the compilers like Embarcadero RAD Studio C++ compilers are required to perform two stages: definition stage and instantiation stage. The template definition stage On this stage the following checks are performed: static assertions and availability of names declarations (such as names of classes and functions) independent on template parameters are…
Read more