Product News

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

Visual Studio 2017 Version 15.7 Preview 2—Christine Ruana

Today Microsoft released the second preview of the next update: Visual Studio 2017 version 15.7:

Visual Studio 2017 Version 15.7 Preview 2

by Christine Ruana

C++ Standards Conformance Highlights (detailed C++ release notes here):

Implemented Template argument deduction for class templates:

​pair p{2, 2.5};

Full implementation of Expression SFINAE

Expand the using declaration to support pack expansion semantics for variadic base class members

Implemented parallel algorithms conforming to the ISO C++17 standard


wxWidgets 3.0.4 Released

The wxWidgets team is pleased to announce a new release of our open source framework for the development of native cross-platform applications in C++.

wxWidgets Release 3.0.4

by the wxWidgets team

About the release:

wxWidgets 3.0.4 is a stable bug fix release in 3.0 branch.

More information is available at wxWidgets home page and in the online documentation.

Announcing the Meeting C++ employer listing

News from Meeting C++: the job section features now a listing of C++ employers, which support Meeting C++. Also you can post your own jobs now at Meeting C++!

The Meeting C++ employer listing is online

by Jens Weller

From the article:

With this week, a feature of the old website returns: the Meeting C++ employer listing. So companies with open C++ positions get a permanent representation at Meeting C++ with their profile and contact information.

POCO Release 1.9.0 Available

POCO 1.9.0 is now available:

POCO Release 1.9.0 available

by POCO Team

About the release

POCO C++ Libraries release 1.9.0 is available. Major new features include additional text encodings, available in the Poco::Encodings library, and support for Internationalized Domain Names in the Poco::Net::DNS class.

See the CHANGELOG for the full list of all 20+ changes. Upgrading to this release is recommended.


Clang 6.0.0 released

LLVM 6.0.0 and Clang 6.0.0 are now available.

Clang 6.0.0 Release Notes

From the announcement:

Clang’s default C++ dialect is now gnu++14 instead of gnu++98. This means Clang will by default accept code using features from C++14 and conforming GNU extensions. Projects incompatible with C++14 can add -std=gnu++98 to their build settings to restore the previous behaviour.

Added support for some features from the C++ standard after C++17 (provisionally known as C++2a but expected to be C++20). This support can be enabled with the -std=c++2a flag. This enables:

  • Support for __VA_OPT__, to allow variadic macros to easily provide different expansions when they are invoked without variadic arguments.
  • Recognition of the <=> token (the C++2a three-way comparison operator).
  • Support for default member initializers for bit-fields.
  • Lambda capture of *this.
  • Pointer-to-member calls using const &-qualified pointers on temporary objects.

A warning has been added for a <= token followed immediately by a > character. Code containing such constructs will change meaning in C++2a due to the addition of the <=> operator.

Clang implements the “destroying operator delete” feature described in C++ committee paper P0722R1 <>, which is targeting inclusion in C++2a but has not yet been voted into the C++ working draft. Support for this feature is enabled by the presence of the standard library type std::destroying_delete_t.


Static Code Analyzer PVS-Studio 6.22 Now Supports ARM Compilers (Keil, IAR)

Now our articles have every chance to become even more interesting because PVS-Studio can now check the code of embedded devices. We have added support for a few ARM compilers, which I talk about in detail below.

Static Code Analyzer PVS-Studio 6.22 Now Supports ARM Compilers (Keil, IAR)

by Andrey Karpov

From the article:

I find the RT-Thread operating system a perfect candidate to be the first embedded system checked with PVS-Studio. I glanced through the analysis report by PVS-Studio and picked 95 warnings that I thought to be the most interesting ones. Too see all those messages for yourself, download the archive with the full HTML report. We introduced this format not so long ago, and some users may not know about it. So, I'd like to use this opportunity to explain it once again.

JetBrains runs an embedded dev survey

JetBrains considers embedded dev market a priority for C++ tools (especially CLion) and a very interesting direction for Kotlin/Native. However, before diving into it we are running a full-blown market research study.

Embedded developers survey

by JetBrains

About the survey

This survey is a part of these research activities. Tell us how you do embedded development, what tools you use, what your needs and pains points are, and how we can help.

Share your experience with us and get a chance to win a $50 Amazon certificate!

Make your C++ voice heard! Cross-industry survey from the VC++ team

The VC++ team is asking for your perspectives, whichever compiler you're using and whatever platform you're targeting:

Make your C++ voice heard! Cross-industry survey from the VC++ team

C++ is evolving, and so are our plans around it here at Microsoft. Recent investments by our team include the new cross-platform Visual Studio Code editor, CMake and Linux support in Visual Studio, a C++ language service which, when editing, can match your C++ compiler of choice, and support for remote debugging on any platform.

We would like to hear from you on what are your next set of challenges. Please take our survey to help shape our cross-platform C++ plans