Product News

Boost 1.67 released

Boost 1.67 is now available:

Boost Version 1.67.0

There are two new libraries:

  • Contract: Contract programming for C++. All contract programming features are supported: Subcontracting, class invariants, postconditions (with old and return values), preconditions, customizable actions on assertion failure (e.g., terminate or throw), optional compilation and checking of assertions, etc, from Lorenzo Caminiti.
  • HOF: Higher-order functions for C++, from Paul Fultz II.

Also, many updated libraries have been updated. See the announcement for details.


C++ Modernization Brochure—Don Tait


C++ Modernization Brochure

by Don Tait

From the article:

New releases of the C++ language maintain incredibly strong backwards compatibility, making it easy to keep older C++ code working properly as standards march forward. C++11, C++14, and C++17 have transformed the C++ language in ways that make it as programmer-friendly as more recent languages but with many essential benefits that continue to make it the best choice for the most demanding software-engineering projects.

Modernizing your C++ may be the best way to both improve your team’s efficiency as well as future-proof your software investment. KDAB has broad, deep experience delivering cost-effective, long-term, pragmatic solutions that modernize existing C++ codebases without losing functionality during the process.

Download our brochure to find out more...

Meeting C++ is on Patreon

Meeting C++ launched a new community on Patreon:

Starting a new Community at Patreon

by Jens Weller

From the article:

Something new: you can now support Meeting C++ through Patreon!

This will go mostly into videos & video interviews and the Meeting C++ blog. I started doing my own videos and video interviews on YouTube last year, and to compliment that, I decided to also start a community of supporters on patreon. You'll be able to know guests of Meeting C++ & friends ahead of time and be able to suggest potential questions to ask...

CLion 2018.1 is released: more C++17, WSL, CMake Install, Fortran and Rust plugins—JetBrains

A new release is here!

CLion 2018.1 is released: more C++17, WSL, CMake Install, Fortran and Rust plugins

by Anastasia Kazakova

From the article:

With this year’s first update, CLion 2018.1, you get enhanced C++17 support (including structured bindings and if/switch with initializers), new CMake actions (like CMake Install), various editor improvements (breadcrumbs and more), and a more responsive editor.

Windows users can benefit from support for Windows Subsystem for Linux (WSL), which makes it possible to compile, run, and debug Linux-compatible binaries while working on Windows, and even run them with Valgrind Memcheck.

2018.1 version also comes with the bundled support for Objective-C and Objective-C++, Fortran and Rust plugins. Rust comes with Cargo build system and the debugger.


PVS-Studio is now available on macOS: 64 weaknesses in the Apple’s XNU Kernel

A new version of the PVS-Studio analyzer 6.23 is working under macOS, which allows you to check the projects written in C and C++. Our team decided to perform a XNU Kernel check to coincide it with this event.

PVS-Studio is now available on macOS: 64 weaknesses in the Apple's XNU Kernel

by Andrey Karpov

From the article:

Although the XNU Kernel is relatively small, it's a challenge to study the analyzer warnings alone, which takes much time. False positives make the check more complicated, since I haven't performed the preliminary analyzer configuration. I just quickly looked through the warnings, writing out code fragments that, in my opinion, represent interest. This is more than enough for writing a quite large article. PVS-Studio analyzer easily finds a large number of interesting bugs.

Emulating templated generic lambda expressions—Krzysztof Ostrowski

Embedding and recovering the type information in generic lambda expressions.

Emulating templated generic lambda expressions

by Krzysztof Ostrowski

From the article:

One of the greatest advantages of lambda expressions is their locality. It is really comfortable to reason about the code if the most of its parts are in the "near" scope, and the inversion of control is limited. On the other hand, optimiser's life is much easier with lambdas (they are just syntactic sugar, thus their actual structure is defined by the compiler). Moreover, lambdas' opaque mangled names can drastically reduce compile times. Parametrically polymorphic (generic) lambda expressions introduce additional flexibility in algorithm implementation and minimise maintenance work.

Paradoxically, generic lambda expressions in C++17 are somewhat too generic. That characteristic announces itself in inability to fix the lambda parameters in advance. Unlike in function templates, we cannot specify the parameter types explicitly to effectively disable template argument deduction from the passed function arguments.

Some steps towards templated generic lambdas are going to be taken in C++20. For the time being, a simple technique that emulates templated generic lambdas proposed in this article may be reused.

HPX V1.1 released—STE||AR Group

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

HPX V1.1 Released

The newest version of HPX (V1.1) is now available for download! Please see here for the release notes.

HPX exposes an API fully conforming to the concurrency related parts of the C++11/C++14/C++17 standards, extended and applied to distributed and heterogeneous computing, and aligned with the ongoing standardization discussions.

    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, task blocks, data-parallel algorithms, executors, index-based parallel for loops, 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 which tends to improve the parallel efficiency of our applications and helps reduce complexities usually associated with concurrency