April 2020

CopperSpice: What is the C++ standard library?

New video on the CopperSpice YouTube Channel:

What is the C++ Standard Library?

by Barbara Geller and Ansel Sermersheim

About the video:

In this video, we look at what the C++ standard library is, compare it to the STL, and talk about the distinction between the C++ standard library and the C++ core language. We also explore the various standard library implementations, and when you might want to specify one explicitly.

Please take a look and remember to subscribe!

Runtime Polymorphism with std::variant and std::visit -- Bartlomiej Filipek

Read about an interesting way of runtime polymorphism with std::variant/std::visit!

Runtime Polymorphism with std::variant and std::visit

<img alt="" data-cke-saved-src="https://4.bp.blogspot.com/-xp784ADNQ_s/XorA74Xk8rI/AAAAAAAAESM/GFYHPA2a7_4iro82vp1IPBtFdwpLfYAZACLcBGAsYHQ/s1600/varpoly.png" src="https://4.bp.blogspot.com/-xp784ADNQ_s/XorA74Xk8rI/AAAAAAAAESM/GFYHPA2a7_4iro82vp1IPBtFdwpLfYAZACLcBGAsYHQ/s1600/varpoly.png" 200px;="" float:="" right;="" height:="" 64px;"="" style="height: 74px; width: 230px; float: right;">

by Bartlomiej Filipek

From the article:

Runtime polymorphism usually connects with v-tables and virtual functions. However, in this blog post, I’ll show you a modern C++ technique that leverages std::variant and std::visit. This C++17 technique might not only offer better performance and value semantics, but also interesting design patterns.

Making hybrid systems -- Krzysztof Ostrowski

Connecting multiple systems by means of a common denominator.

Making hybrid systems

by Krzysztof Ostrowski

From the article:

In every well-managed software project sooner or later we face cross-system boundaries testing needs, where we basically observe how our software cooperates with the other actors. Those actors include users as well as the other software products. Following article presents an idea of a hybrid system of asynchronous actors running in a heterogeneous environment.

PVS-Studio 7.07

The PVS-Studio team is now working remotely and continuing to actively develop the product by adding new features and diagnostics. We write articles, for example, about the GCC 10 check or the DeepCode review. Sure, we continue pushing out releases.

PVS-Studio 7.07

by Svyatoslav Razmyslov

From the article:

In between the analyzer releases, Microsoft pushed out several updates for the Visual C++ compiler, which comprised initial support of the C++20 standard, for example, concepts. Unfortunately, when running the analyzer some users stumbled upon the error V003 - Unrecognized error found. We're glad to inform that this error is fixed in PVS-Studio 7.07. Concepts are supported.


Pure Virtual C++ Conference 2020 (April 30, online)

pvcpp.PNGEven though most spring C++ events are cancelled, a new one was just announced for the end of this month!

Sign up for Pure Virtual C++ Conference 2020

by Sy Brand

From the post:

Pure Virtual C++ 2020 is a free single-track one-day virtual conference for the whole C++ community. It is taking place on Thursday 30th April 2020 from 14:30 to 23:00 UTC. Sign up on the event website.

All talks will be pre-recorded and streamed on YouTube Live with a live Q&A session with the speakers. After the event, the talks will be available to watch online for free.

CLion 2020.1 release is here!

Welcome the fresh CLion 2020.1 release!

CLion 2020.1: Dozens of Improvements Across the IDE, and Benefits for CUDA and Embedded Projects

by Anastasia Kazakova

From the article:

Here is a quick overview of the main highlights. If you are interested in the specific details, please read on:

  • CUDA projects: code assistance in CUDA C/C++ code, an updated New Project wizard, support for CUDA file extensions
  • Embedded development: support for the IAR compiler and a plugin for PlatformIO
  • Windows projects: support for Clang-cl and an LLDB-based debugger for the Visual Studio C++ toolchain
  • Clang-based tools update
  • Refactorings, formatter, documentation, and editor enhancements
  • Run/Debug configurations
  • IntelliJ Platform updates

Overload 156 is now available

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

Overload 156 is now available

From the journal:

Respect can mean many different things. Frances Buontempo muses on its myriad meanings.

Pass the Parcel.
Python’s module and package system has many features. Steve Love explores some more advanced ones.

Quick Modular Calculations (Part 3).
This article concludes the 3-part series. Cassio Neri presents a new algorithm that also works for 64-bit operands.

Deconstructing Inheritance.
Inheritance can be overused. Lucian Radu Teodorescu considers how it can go wrong and the alternatives.

Using Compile Time Maps for Sorting.
Compile time sorting can be interesting. Norman Wilson shows how to sort a map.

Profiting from the Folly of Others.
Code referred to as a hack can raise an eyebrow. Alastair Harrison learns about accessing private members of C++ classes by investigating a header called UninitializedMemoryHacks.h

It’s About Time.
How easy is it to make code wait for a time period before doing something? Mike Crowe looks at ways to avoid problems when a system clock changes.

A Day in the Life of a Full-Stack Developer.
Many roles claim to be full stack. Teedy Deigh shares a day in the life of a full stack developer.

shared_ptr - basics and internals with examples--Hitesh Kumar

Did you know it?

shared_ptr - basics and internals with examples

by Hitesh Kumar

From the article:

The C++11 std::shared_ptr<T> is a shared ownership smart pointer type. Several shared_ptr instances can share the management of an object's lifetime through a common control block. The managed object is deleted when the last owning shared_ptr is destroyed (or is made to point to another object). Memory management by shared_ptr is deterministic because the timing of a managed object's destruction is predictable and in the developer's control. Hence, std::shared_ptr brings deterministic automatic memory management to C++, without the overhead of garbage collection. Here is a basic example of shared_ptr...

corobatch: using coroutines to batch operations with no effort--Francesco Zoffoli


corobatch: using coroutines to batch operations with no effort

by Francesco Zoffoli

From the article:

Often performing operations in batch is more efficient than doing them one at a time. Typical examples could be most kinds of I/O, or vectorized instructions.

Unfortunately, doing operations on groups of items at the same time can be much less readable than doing them one element at a time...