Write cleaner, safer, modern C++ code with SonarQube

SonarSource will present a 30min webinar Wednesday, Sept 2 at 15:00 GMT to show how you can use SonarQube and SonarLint static analysis to write better C++. Even if you can't attend, sign up and we'll send you a link to the recording afterward.

Write cleaner, safer, modern C++ code with SonarQube

by SonarQube

From the announcement:

As a C++ Developer, you know that writing clean, secure, modern C++ code is important for you and your users. At SonarSource, we know that only developers can truly impact Code Quality and Security, so we put the power in your hands.

SonarQube makes C++ development easier with static code analysis that's powerful, fast, and accurate - right out of the box. Analysis is easy to integrate into your workflow and works with most common compilers, including many for embedded systems. Come see for yourself how you can make your C++ projects more reliable and secure.

Friendly reminder to mark your move constructors noexcept -- AndyG

AndyG warns us that if you're upgrading to Visual Studio 2017, you might be incurring some unexpected performance overhead thanks to better noexcept support.

Friendly reminder to mark your move constructors noexcept

by AndyG

From the article:

Since C++11 we have had the noexcept keyword, which is a promise that the function will not throw an exception (and if it does, go straight to std::terminate, do not pass go). noexcept is nice for two reasons:

  1. The compiler can optimize a little better because it doesn’t need to emit any code for unwinding a call stack in case of an exception, and
  2. It leads to incredible performance differences at runtime for std::vector (and other containers, too)

CppCon 2019: std::midpoint? How Hard Could it Be?--Marshall Clow

This year, CppCon 2020 is going virtual. The dates are still the same – September 14-18 – and we are aiming for the CppCon live event to have pretty much everything you’re familiar with at CppCon except moved online: multiple tracks including “back to basics” and a new “embedded” track; live speaker Q&A; live talk time zones friendly to Americas and EMEA (and we’re going to try to arrange around-the-clock recorded repeats in all time zones, where speakers who are available can be available for live Q&A in their repeated talks too, and we’ll do that if it’s possible – but we’re still working on it!); virtual tables where you can interact face-to-face online with other attendees just like at the physical event; virtual exhibitor spaces where you can meet the folks on your favorite product’s teams to ask them question face-to-face; pre- and post-conference classes; and even the CppCon house band playing live before every plenary session. All talk recordings will be freely available as usual on YouTube a month or two after the event, but everything else above will be available only live during CppCon week.

To whet your appetite for this year’s conference, here’s another of the top-rated talks from last year. Enjoy – and register today for CppCon 2020 – all the spirit and flavor of CppCon, this year all virtual and online!

std::midpoint? How Hard Could it Be?

by Marshall Clow

Summary of the talk:

The standards committee adopted "P0811: Well-behaved interpolation for numbers and pointers" for C++20.
It includes a new library call `std::midpoint`.
The paper says "The simple problem of computing a value between two other values is surprisingly subtle in general."

In this talk, I will explore this simple call, provide a history of the development in libc++, and show some of the pitfalls.
Undefined behavior will rear its ugly head, along with numeric representations, and the arcane C promotion rules.

Along the way, we'll talk about testing, and why writing extensive tests helps everyone.

C++17: Polymorphic Allocators, Debug Resources and Custom Types--Bartlomiej Filipek

Better memory management.

C++17: Polymorphic Allocators, Debug Resources and Custom Types

by Bartlomiej Filipek

From the article:

In my previous article on polymorphic allocators, we discussed some basic ideas. For example, you’ve seen a pmr::vector that holds pmr::string using a monotonic resource. How about using a custom type in such a container? How to enable it? Let’s see.

CppCon Selects Remo

For the best experience.

CppCon Selects Remo

From the article:

CppCon is announcing the platform that it has selected for the CppCon 2020 online conference and why it matters...

PVS-Studio 7.09

Therefore, most likely, now each release will be followed by a special note so that users don't miss changes that may be useful to them. What's interesting is that from now on we won't just list everything that was added or improved. Rather, now on the contrary, the purpose is to highlight the most important features in the news to avoid having just a boring list of changes.

PVS-Studio 7.09

by Andrey Karpov

From the article:

New general analysis diagnostics:

  •     V1059. Macro name overrides a keyword/reserved name. This may lead to undefined behavior.
  •     V1060. Passing 'BSTR ' to the 'SysAllocString' function may lead to incorrect object creation.
  •     V1061. Extending 'std' or 'posix' namespace may result in undefined behavior.
  •     V1062. Class defines a custom new or delete operator. The opposite operator must also be defined.
  •     V1063. The modulo by 1 operation is meaningless. The result will always be zero.