May 2020

PVS-Studio 7.07: Features Overview

The purpose of this article is to give a general overview of the features of the PVS-Studio static analyzer.

PVS-Studio 7.07: Features Overview

by Ekaterina Nikiforova

From the article:

The next command I'd like to talk about is called "Display CWE Codes in Output Window". PVS-Studio is a static application security testing (SAST) tool, which means its warnings can be classified according to the Common Weakness Enumeration (CWE).

Announcing Meeting C++ Trainings!

Meeting C++ Trainings - a site for online trainings launched on Monday:

Announcing the start of Meeting C++ Trainings

by Jens Weller

From the article:

Meeting C++ organizes now its own online trainings, learn C++ from the leading experts!

You can choose trainings from several trainers and participate in the training you need online. Both half day and full day trainings are available. Right now the listed trainings start by mid June and go into July, but soon also Trainings in August and September will be available. My goal is to offer 1-2 Trainings per trainer in one quarter...

Ordering by constraints--Andrzej Krzemieński

Moving to C++20!

Ordering by constraints

by Andrzej Krzemieński

From the article:

In the previous post we have seen how constraint conjunction and disjunction works, and how a function template with constraints is a better match than a function template without constraints (provided that the constraints are satisfied) when determining the best overload. We have also mentioned that selecting a better match from two constrained templates is possible, but not obvious. In this post we will expand on this, and show how constraint conjunction and disjunction as well as concepts play an important role in ordering function overloads and class template specializations based solely on constraints. This is one of the situations where language concepts show their special properties...

GCC 10.1 Released--Jakub Jelinek

The new version is out.

GCC 10.1 Released

by Jakub Jelinek

From the article:

A year has lapsed away since the release of last major
GCC release, more than 33 years passed since the first
public GCC release and the GCC developers survived
repository conversion from SVN to GIT earlier this year.

Today, we are glad to announce another major GCC release, 10.1.

This release makes great progress in the C++20 language support,
both on the compiler and library sides [1], some C2X enhancements,
various optimization enhancements and bug fixes, several new
hardware enablement changes and enhancements to the compiler back-ends
and many other changes.  There is even a new experimental static
analysis pass [2]...

Nifty Fold Expression Tricks--Jonathan Müller

Many things can be done!

Nifty Fold Expression Tricks

by Jonathan Müller

From the article:

Suppose you need to have a variadic function and want to add all arguments together. Before C++17, you need two pseudo-recursive functions:

template <typename H, typename ... T>
auto add(H head, T... tail)
    return head + add(tail...);

template <typename H>
auto add(H head)
    return head;

However, C++17 added fold expressions, making it a one-liner:

template <typename H, typename ... T>
auto add(H head, T... tail)
    return (head + ... + tail);
    // expands to: head + tail[0] + tail[1] + ...

If we’re willing to abuse operator evaluation rules and fold expressions, we can do a lot more. This blog posts collects useful tricks...

CppDepend v2020.1 Released! - Dependency Graph Completely Rebuilt, new Linux version, CUDA support

CppDepend allows architects and developers to analyze C and C++ code base, automate code reviews, and facilitate refactoring and migration.

CppDepend v2020.1

by CppDepend

About the release

CppDepend’s Dependency Graph feature has been rebuilt from scratch. And, thanks to several innovations, it is now a unique and differentiated tool for exploring and navigating code bases. Feature highlights include:

  • Optimized to work on very large codebases: For example, now the graph can be used to navigate in a very large project in real-time.
  • New graph navigation bar: expand/collapse parent nodes; focus on entangled code; generate call graphs, coupling graphs, inheritance graphs, and more.
  • New dependency graph layout option: group by project, namespace, or class with new color conventions and new filters.
  • Complex graphs are simplified with Clusters: cluster nodes can be automatically introduced to make large and complex graphs readable.
  • Search in graphs: Interesting graphs can be quickly obtained by searching elements by name and pruning un-matched elements.
  • Export graphs to SVG vector format
  • Dependency Graph presentation in reports has been improved: thanks to clusters feature.
  • Smart Graph Persistence: A list of actions can be persisted to obtain a graph that remains in-sync through code changes.

Also, CppDepend 2020.1 includes:

  • CppDepend on Linux completely rebuilt: The Linux GUI is completely rebuilt to use the GTK framework for a better user experience.
  • C/C++ plugin for SonarQube is now available on Linux
  • CUDA Support: CppDepend fully supports the analysis of CUDA-based applications.
  • Improved Physical structure analysis: When you create a new CppDepend project you have now the choice to use a logical view or a physical view.
  • Source File Store Out Of The Box: Parsed source files are now zipped at analysis time.
  • Bamboo and AppVeyor Integration: You can now integrate the CppDepend report to Bamboo and AppVeyor
  • Numerous Bugs Fixes and Improvements

Click here to see a series of short GIF animations that illustrate these features and product improvements.

Download and enjoy the new version of CppDepend now by clicking here.