PVS-Studio Integration in PlatformIO

Recently, the PlatformIO development environment of embedded systems has supported PVS-Studio. In this article, you'll find out how to check your code with the static analyzer on the example of open project.

PVS-Studio Integration in PlatformIO

by Alexey Govorov

From the article:

In the /arduino/AP_Utils/examples/ directory, there are several examples of programs for configuring and running the hexapod, we'll use servo_test.ino. Basically, the program for Arduino is created as sketches in the INO format, which in this case is not quite suitable. In order to make the correct .cpp file from it, it is usually enough to change the file extension, add the #include <Arduino.h> header at the beginning, and make sure that functions and global variables are declared before accessing them.

Are you ready for C++Now?--Jon Kalb

Yes!

Are you ready for C++Now?

by Jon Kalb

From the article:

C++Now, which takes place in Aspen this May, refers to itself as A Gathering of C++ Experts and Enthusiasts from around the world. The conference, originally called BoostCon, was started so that Boost library authors, who had gotten to know each other online, could meet and discuss face to face. The Boost library is where experts develop and put into production the cutting edge techniques of C++...

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.

HPX V1.4.1 released -- STE||AR Group

The STE||AR Group has released V1.4.1 of HPX -- A C++ Standard library for parallelism and concurrency.

HPX V1.4.1 Released

The newest version of HPX (V1.4.1) is now available for download! This is mostly a bug-fix release that fixes problems found in the previous HPX V1.4.0. Please see here for a full list of resolved issues.

    HPX is a general purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++ Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 parallel algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g. compute clusters) and for heterogeneous systems (e.g. GPUs).

    HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parellism and concurrency.

 

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