Articles & Books

C++20: Python's map Function--Rainer Grimm

The series continue.

C++20: Python's map Function

by Rainer Grimm

From the article:

Today, I finish my experiment writing beloved Python functions in C++. So far, I implemented the Python functions filter, range, and xrange. Today, I have a closer look at the map function and combine the functions map and filter into one function...

Literal classes as non-type template parameters in C++20 -- Kevin Hartman

Using user-defined literal classes as non-type template parameters in C++20.

Literal classes as non-type template parameters in C++20

by Kevin Hartman

 

From the article:

/**
* Prints whether or not a value was provided for "maybe" WITHOUT branching smile
*/
template<OptionalInt maybe>
void Print() {
    if constexpr(maybe.has_value) {
        std::cout << "Value is: " << maybe.value << std::endl;
    } else {
        std::cout << "No value." << std::endl;
    }
}

[intermediate][C++20]

C++ Packaging and Design Rules -- John Lakos

In this excerpt from Large-Scale C++ Volume I: Process and Architecture, John Lakos presents how to organize and package component-based software in a uniform (domain-independent) manner. This chapter also provides the fundamental C++ design rules that govern how to develop modular software hierarchically in terms of components, packages, and package groups.

C++ Packaging and Design Rules

by John Lakos 

From the article:

The way in which software is organized governs the degree to which we can leverage that software to solve current and new business problems quickly and effectively. By design, much of the code that we write for use by applications will reside in sharable libraries and not directly in any one application. Our goal, therefore, is to provide some top-level organizational structure that allows us to partition our software into discrete physical units so as to facilitate finding, understanding, and potentially reusing available software solutions.

How I declare my class and why -- Howard Hinnant

An experience-based opinion piece from one of the masters of C++:

How I declare my classes and why

by Howard Hinnant

Howard is the lead designer and author of move semantics, and a longtime C++ committee member where he has served as chair of the Library Working Group and is a current member and recent chair of the Direction Group.

From the article:

When I'm reading a class declaration, the very first things I want to know are:

  • What resources does this class own?
  • Can the class be default constructed?
  • Can the class be copied or moved?
  • How can the class be constructed (other than by default, copy or move)?
  • What else can one do with the class?

Note that this is an ordered list...

Virtual, final and override in C++--Jonathan Boccara

3 keywords that go together.

Virtual, final and override in C++

by Jonathan Boccara

From the article:

C++11 added two keywords that allow to better express your intentions with what you want to do with virtual functions: override and final. They allow to express your intentions both to fellow humans reading your code as well as to the compiler.

However, as we will see, the intention of override is super useful, but the intention of final… is harder to understand.

Both apply to virtual functions, which are the member functions of a base class that can be overridden by the classes that derive (inherit) from it...