March 2017

C++ Braced Initialization—Edouard of quasardb

Do you use it?

C++ Braced Initialization

by Edouard of quasardb

From the article:

Since C++ 11 it's possible to use braces for construction and initialization. Although this is something you could ignore for the code you write, it's obviously important to know for the code you may read.

If you have a couple of years of experience in C++, the temptation can be great to keep your old habits because "All these new features are useless! The language is bloated! Those people in the committee!".

Let's make sense out of the bloat...

CppChat[14] SFINAW


CppChat[14]: SFINAW

with Bryce Adelstein Lelbach, Jonathan Müller (foonathan), Odin Holms, and Jon Kalb

From the chat:

Bryce, Jonathan, Odin, and Jon discuss the Kona meeting, Visual Studio 2017, CppCast, Meeting C++ Live, and more.

I Wrote The Fastest Hashtable—Malte Skarupke

This is Malte's third article on hash table design. His solution shows favorable performance against std::unordered_map, boost::multi_index, google::dense_hash_map, and more. Malte includes intuitive descriptions of why each design decision was made and what tradeoffs might exist. The article also describes some interesting artifacts in the implementations of other hash table implementations.

I Wrote The Fastest Hashtable

by Malte Skarupke

From the article:

There are many types of hashtables. For this one I chose

  • Open addressing
  • Linear probing
  • Robing hood hashing
  • Prime number amount of slots (but I provide an option for using powers of two)
  • With an upper limit on the probe count

I believe that the last of these points is a new contribution to the world of hashtables. This is the main source of my speed up, [...]

C++::London talk: A polymorphic value-type for C++

On 25th January at CodeNode, London, Jonathan Coe presented polymorphic_value<T> to the C++::London meetup group.

The class template polymorphic_value is proposed for addition to the C++ Standard Library. The class template, polymorphic_value, confers value-like semantics on a free-store allocated object. A polymorphic_value<T> may hold an object of a class publicly derived from T, and copying the polymorphic_value will copy the object of the derived type.

A polymorphic value-type for C++ (Video)

About the presenter:

Jonathan is a mathematical developer using modern C++ and Python. He has worked in academia and the financial and energy industries. He's been a participant in the C++ standards committee since 2014.

“What’s new in C++11/14?” Training in Berlin, 04-06 April 2017

Join us in the upcoming C++11/14 training in Berlin, 04-06 April 2017.

What's new in C++11/14?

Training course by KDAB

About the training

C++11 is a new major version of the C++ standard, released in 2011, and brings many new features to C++ that make the language safer, faster as well as easier and more fun to use. Every professional C++ developer will sooner or later come into contact with C++11/C++14 and introducing its advantages early can only be beneficial.

In this hands-on C++11 and C++14 training for professional C++ developers, you will learn the language changes and the standard library changes introduced in C++11 as well as the changes from C++14.

In class, C++11 and C++14 will be demonstrated with the aid of many examples, and you will get the opportunity to use C++11 and C++14 right away in our lab projects.

The full table of contents for the course is available here.

Heaptrack v1.0.0 Release—Milian Wolff

Milian Wolff announces the first stable release of Heaptrack, a fast heap memory profiler for C and C++ software running on Linux.

Heaptrack v1.0.0 Release

by Milian Wolff

From the article:

Heaptrack is a fast heap memory profiler that runs on Linux. It allows you to track all heap memory allocations at run-time.

Afterwards, the accompanying GUI tool can be used to find optimization opportunities in your code by analyzing the recorded profiling data. It allows you to:

  • Inspect peak heap memory consumption
  • Find memory leaks
  • Count overall number of memory allocations and find temporary allocations
  • Find small allocations with large overhead

Zapcc 1.0 - A Much Faster C++ Compiler

We are happy to announce Zapcc, a Clang/LLVM based C++ compiler, with much faster compilations.


by the Zapcc team

About the compiler:

Typically, Zapcc accelerate full C++ builds by x2-x5, and incremental builds by x10 and more.

Zapcc is available for evaluation on the companies website.

Feel free to try it out!

CppCast Episode 92: Visual Studio 2017 for C++ Developers with Daniel Moth

Episode 92 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Daniel Moth from Microsoft to talk about all of the new C++ features in today's release of Visual Studio 2017.

CppCast Episode 92: Visual Studio 2017 for C++ Developers with Daniel Moth

by Rob Irving and Jason Turner

About the interviewee:

Daniel Moth joined Microsoft in the UK in 2006, before transitioning to Redmond in 2008 to work as a Program Manager on Visual Studio, which is where he is still working today. Before Microsoft he worked as a software developer in the industry for almost a decade, most of that time building mobile apps.

Visual Studio 2017 for C++ developers

The following Visual Studio 2017 launch day articles have gone live on the VCBlog:

Visual Studio 2017 for C++ developers – you will love it

C++ Code Analysis improvements in Visual Studio 2017 RTM

Check for const correctness with the C++ Core Guidelines Checker

Binary Compatibility and Pain-free Upgrade: Why Moving to Visual Studio 2017 is almost “too easy”

MSVC: The best choice for Windows

Use any C++ Compiler with Visual Studio

C++ game development workload in Visual Studio 2017

Completed UserVoice Suggestions in Visual Studio 2017

C++ Standards Conformance from Microsoft

Visual Studio Code C/C++ extension March 2017 Update

C++14 conformance improvements: constexpr and aggregate initialization

Finding installed Visual C++ tools for Visual Studio 2017