Articles & Books

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...

Freestanding in Prague--Ben Craig

All you want to know.

Freestanding in Prague

by Ben Craig

From the article:

The C++ standards committee met in Prague, Czech Republic between Feb 10 and Feb 15. The standard is wording complete, and the only thing between here and getting it published is ISO process. As is typical for me at these meetings, I spent a lot of time doing freestanding things, Library Incubator (LEWGI) things, and minuting along the way (15-ish sessions/papers!)...

Move, simply--Herb Sutter

No need to get complicated.

Move, simply

by Herb Sutter

From the article:

C++ “move” semantics are simple, but they are still widely misunderstood. This post is an attempt to shed light on that situation...

C++20: The Ranges Library--Rainer Grimm

One big of c++20.

C++20: The Ranges Library

by Rainer Grimm

From the article:

Thanks to the ranges library in C++20, working with the Standard Template Library (STL) will become much more comfortable and powerful. The algorithms of the ranges library are lazy, can work directly on the container and can easily be composed. To make it short: The comfort and the power of the ranges library are due to its functional ideas. Let me show you what that means...

Large-Scale C++: Process and Architecture --- John Lakos

Writing reliable and maintainable C++ software is hard. Designing such software at scale adds a new set of challenges. Creating large-scale systems requires a practical understanding of logical design — beyond the theoretical concepts addressed in most popular texts. To be successful on an enterprise scale, developers must also address physical design, a dimension of software engineering that may be unfamiliar even to expert developers. How do you do this?

Large-Scale C++ Volume I: Process and Architecture

by John Lakos

From the article:

Drawing on over 30 years of hands-on experience building massive, mission-critical enterprise systems, John Lakos lays the foundation for projects of all sizes and demonstrates the processes, methods, techniques, and tools needed for successful real-world, large-scale development.

Up to date and with a solid engineering focus, this book demonstrates fundamental design concepts with concrete examples.

This book, written for fellow software practitioners, uses familiar C++ constructs to solve real-world problems while identifying (and motivating) modern C++ alternatives.

C++20 is Done!

Houra!

C++20 is Done!

From the article:

C++20, the most impactful revision of C++ in a decade, is done! ������

Overload 155 is now available

ACCU’s Overload journal of February 2020 is out. It contains the following C++ related articles.

Overload 155 is now available

From the journal:

Members and Remembrances.
Remembering things can be difficult. Frances Buontempo reminisces on routes to erudition.

A line-to-line conversion from Node.js to Node.cpp.
Dmytro Ivanchykhin, Sergey Ignatchenko and Maxim Blashchuk show how we can get a 5x improvement in speed.

The Path of Least Resistance.
Python’s modules and imports can be overwhelming. Steve Love attempts to de-mystify the process.

Quick Modular Calculations(Part 2).
The minverse algorithm previously seen is fast but has limitations. Cassio Neri presents two alternatives.

A Secure Environment for Running Apps?.
Getting apps from the app store is easy. Alan Griffiths considers this from a security perspective.

Afterwood.
The centre half is more than a sporting term. Chris Oldwood shows us why.

Zero, one, two, Freddy's coming for you

The article might be of interest for authors of books, articles, and C++ coding standards. Based on the given material, you can discuss questions of C++ code quality and ways how to reduce the likelihood of errors' occurence.

Zero, one, two, Freddy's coming for you

by Andrey Karpov

From the article:

This post continues the series of articles, which can well be called «horrors for developers». This time it will also touch upon a typical pattern of typos related to the usage of numbers 0, 1, 2. The language you're writing in doesn't really matter: it can be C, C++, C#, or Java. If you're using constants 0, 1, 2 or variables' names contain these numbers, most likely, Freddie will come to visit you at night. Go on, read and don't say we didn't warn you.