March 2017

CppCast Episode 94: Safe Numerics with Robert Ramey

Episode 94 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Robert Ramey to discuss his Safe Numerics library and the process of submitting libraries to both Boost and the C++ Standards Committee.

CppCast Episode 94: Safe Numerics with Robert Ramey

by Rob Irving and Jason Turner

About the interviewee:

Robert Ramey is a freelance C++ programmer for around 20 years. He has worked on a variety of applications including desktop retail applications, embedded systems on tiny micro controllers and combinations of these. For the last 10 of those years he has been active in the Boost Organization and

  • Author and Maintainer of the Boost Serialization library
  • Instigator of the Boost Library Incubator (
  • Given talks on Boost/C++ related topics at C++Now and CPPCon
  • Written articles in print periodicals such as Software Development and ACCU Overload

Of late his interest has become more focused on practical approaches to improving program correctness. This has motivated recent talks at CPP Con ( boost units library, C++ and abstract algebra) and most recently the Safe Numerics library - which has very recently been accepted as an official Boost Library.

Italian C++ Conference 2017

A full day of C++ in Italy, June 17, 2017 / University "Bicocca", in Milan.

Italian C++ Conference 2017

Special guests:

Phil Nash (Developer Advocate at JetBrains)

Jens Weller (C++ Evangelist, creator of Meeting C++)

Bartosz Milewski (Blogger specializing in category theory and programming)

Dietmar Kühl (‎Senior Software Developer at Bloomberg LP)


An event organized by the Italian C++ Community.

Sponsors: Bloomberg and JetBrains.


International attendees are welcome: A track consisting of 4 tech sessions & the traditional Ask Us Everything with all the speakers involved are in English.

In a nutshell

The Italian C++ Conference 2017 aims to be a forum for exchanging experiences using the C++ language. The agenda consists of two tracks, one in Italian and one in English.

Who should attend the Italian C++ Conference 2017?

This event is made by passionate C++ professionals for C++ professionals, students and enthusiasts.


What can I find in the Italian C++ Conference 2017?

The agenda consists of 10x60' tech talks and 1x60' Q/A "Ask Us Everything" panel.

You can refer to the detailed program for more information (if you are an Italian reader, here is the same page in Italian).


When does the Italian C++ Conference 2017 take place?

The event will be held on June 17, 2017 at the University "Bicocca", in Milan.

Check-in at 8.30 AM. The event starts at 9.00 AM and will last for a full day.

Who supports this event?

Bloomberg and JetBrains are event main sponsors.

Axosoft and O'Reilly are event partners.

Get in touch if you want to support us!


Do I need to register?

The Italian C++ Conference 2017 is free, but you must register to facilitate the organization of the event. You can register here.

2017-03 post-Kona mailing available

The full 2017-03 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup Disposition
SD-1 2017 PL22.16/WG21 document list John Spicer 2017-02-08 2017-02      
2017-03 post-Kona
N4643 National Body Comments for PDTS 19216, C++ Extensions for Networking Barry Hedquist 2017-02-17 2017-03   WG21  
N4644 National Body Comments for PDTS 21425, C++ Extensions for Ranges Barry Hedquist 2017-02-17 2017-03   WG21  
N4645 WG21 Telecon Minutes Jonathan Wakely 2017-02-21 2017-03   WG21  
N4646 Withdrawn     2017-03   WG21  
N4647 Working Draft, Extensions to C++ for Modules Gabriel Dos Reis 2017-03-19 2017-03 N4637 WG21  
N4648 Editor's Report for the Module TS Gabriel Dos Reis 2017-03-20 2017-03   WG21  
N4649 Working Draft, Technical Specification on C++ Extensions for Coroutines Gor Nishanov 2017-03-03 2017-03 N4628 WG21  
N4650 Editor's report for the Coroutines TS Gor Nishanov 2017-03-02 2017-03   WG21  
N4651 Working Draft, C++ Extensions for Ranges Eric Niebler, Casey Carter 2017-03-15 2017-03   WG21  
N4652 Editor's Report for the Ranges TS Casey Carter 2017-03-15 2017-03   WG21  
N4653 2017-02 Kona Record of Discussion ISO/IEC Jonathan Wakely 2017-03-14 2017-03   WG21  
N4654 WG21 2017-02 Kona Minutes Jonathan Wakely 2017-03-14 2017-03   WG21  
N4655 PL22.16 2017-02 Kona Minutes Jonathan Wakely 2017-03-14 2017-03   WG21  
N4656 Working Draft, C++ Extensions for Networking Jonathan Wakely 2017-03-17 2017-03 N4626 WG21  
N4657 Networking TS - Editor's Report Jonathan Wakely 2017-03-17 2017-03   WG21  
N4658 Alternative accommodation (student residence) for the 2017-07 Toronto WG21 Meeting Botond Ballo 2017-03-17 2017-03   WG21  
N4659 Working Draft, Standard for Programming Language C++ Note: Richard Smith 2017-03-21 2017-03 N4640 WG21  
N4660 C++17 DIS Ballot Document Richard Smith 2017-03-21 2017-03   WG21  
N4661 Editor's Report -- Working Draft, Standard for Programming Language C++ Richard Smith 2017-03-21 2017-03   WG21  
P0019R5 Atomic View H. Carter Edwards, Hans Boehm, Olivier Giroux, James Reus 2017-03-06 2017-03 P0019R4 Library Evolution  
P0020R5 Floating Point Atomic H. Carter Edwards, Hans Boehm, Olivier Giroux, JF Bastien, James Reus 2017-03-06 2017-03 P0020R4 Library Evolution  
P0156R2 Variadic lock_guard (Rev. 4) Mike Spertus 2017-03-03 2017-03 P0156R1 Library Adopted 2017-03
P0237r6 Wording for fundamental bit manipulation utilities Vincent Reverdy, Robert J. Brunner 2017-03-20 2017-03 P0237R5 Library Evolution, SG14, Numerics  
P0250R3 Wording improvements for initialization and thread ids (CWG 2046, 1784) Hans Boehm 2017-03-02 2017-03 P0250R2 Core Adopted 2017-03
P0261R3 C++ Distributed Counters Lawrence Crowl 2017-03-13 2017-03 P0261R2 Concurrency  
P0267R4 A Proposal to Add 2D Graphics Rendering and Display to C++, Michael McLaughlin, Herb Sutter, Jason Zink 2017-03-20 2017-03 P0267R3 Library Evolution  
P0270R3 Removing C dependencies from signal handler wording Hans Boehm 2017-02-02 2017-03 P0270R2 Core, Library Adopted 2017-03
P0290R2 apply() for synchronized_value<T> Anthony Williams 2017-03-02 2017-03 P0290R1 Concurrency  
P0298R3 A byte type definition Neil MacIntosh 2017-03-03 2017-03 P0298R2 Library Evolution Adopted 2017-03
P0409R2 Allow lambda capture [=, this] Thomas Koeppe 2017-03-04 2017-03 P0409R1 Core  
P0430R2 File system library on non-POSIX-like operating systems Jason Liu, Hubert Tong 2017-02-28 2017-03 P0430R1 Library, Library Evolution Adopted 2017-03
P0433R2 Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library Mike Spertus, Walter E. Brown, Stephan T. Lavavej 2017-03-03 2017-03 P0433R1 Library Evolution, Library Adopted 2017-03
P0447R2 Introduction of std::colony to the standard library Patrice Roy, Guy Davidson, Matthew Bentley 2017-02-11 2017-03 P0447R1 Library Evolution, SG14  
P0452R1 Unifying <numeric> Parallel Algorithms Bryce Adelstein Lelbach 2017-03-01 2017-03 P0452R0 Concurrency, Library Evolution, Library Adopted 2017-03
P0464R2 Revisiting the meaning of "foo(ConceptName,ConceptName)" Tony Van Eerd, Botond Ballo 2017-03-12 2017-03 P0464R1 Evolution  
P0467R2 Iterator Concerns for Parallel Algorithms Alisdair Meredith 2017-03-02 2017-03 P0467R1 Concurrency, Library Adopted 2017-03
P0492R2 Proposed Resolution of C++17 National Body Comments for Filesystem Beman Dawes, S. Davis Herring, Nicolai Josuttis, Jason Liu, Billy O'Neal, P.J. Plauger, Jonathan Wakely 2017-03-03 2017-03 P0492R1 Library Adopted 2017-03
P0501R1 C++ Module TS Issues List Gabriel Dos Reis 2017-03-19 2017-03 P0501R0 Core, Evolution  
P0511R1 Deduction guide for std::array Zhihao Yuan 2017-02-24 2017-03 P0511R0 Library Evolution  
P0518R1 Allowing copies as arguments to function objects given to parallel algorithms in response to CH11 David S. Hollman, Jonathan Liffander, Michael Wong, Detlef Vollmann 2017-03-01 2017-03 P0518R0 Library Evolution Adopted 2017-03
P0523R1 Wording for CH 10: Complexity of parallel algorithms Detlef Vollmann 2017-03-01 2017-03 P0523R0 Concurrency, Library Adopted 2017-03
P0548R1 common_type and duration Walter E. Brown 2017-03-03 2017-03 P0548R0 Library Adopted 2017-03
P0553R1 Bit Operations Jens Maurer 2017-03-19 2017-03 P0553R0 Library Evolution  
P0556R1 Integral power-of-2 operations Jens Maurer 2017-03-19 2017-03 P0556R0 Library Evolution  
P0558R1 Resolving atomic<T> named base class inconsistencies Billy O'Neal 2017-03-03 2017-03 P0558R0 Concurrency, Library Adopted 2017-03
P0574R1 Algorithm Complexity Constraints and Parallel Overloads Anthony Williams 2017-03-02 2017-03 P0574R0 Concurrency, Library Adopted 2017-03
P0575R1 Core Language Working Group "ready" Issues for the February, 2016 (Kona) meeting William M. Miller 2017-03-03 2017-03 P0575R0 Core Adopted 2017-03
P0575R2 Core Language Working Group "ready" Issues for the February, 2016 (Kona) meeting William M. Miller 2017-03-03 2017-03 P0575R1 Core  
P0576R1 Core Language Working Group "tentatively ready" Issues for the February, 2016 (Kona) meeting William M. Miller 2017-03-03 2017-03 P0576R0 Core Adopted 2017-03
P0582R0 Modules: Contexts of template instantiations and name lookup Gabriel Dos Reis 2017-03-02 2017-03   Core, Evolution Adopted 2017-03
P0591R1 Utility functions to implement uses-allocator construction Pablo Halpern 2017-03-09 2017-03 P0591R0 Library Evolution  
P0599R1 US140: noxecept for hash functions Nicolai Josutti 2017-03-02 2017-03 P0599R0 Library Adopted 2017-03
P0602R0 variant and optional should propagate copy/move triviality Zhihao Yuan 2017-02-04 2017-03   Library Evolution  
P0603R0 safe memcpy: A simpler implementation primitive for seqlock and friends Andrew Hunter 2017-03-17 2017-03   Concurrency  
P0604R0 Resolving GB 55, US 84, US 85, US 86 Daniel Krugler, Pablo Halpern, Jonathan Wakely 2017-03-03 2017-03   Library Evolution, Library Adopted 2017-03
P0606R0 Concepts Are Ready Gabriel Dos Reis 2017-02-25 2017-03   Evolution  
P0607R0 Inline Variables for the Standard Library Daniel Krugler 2017-02-27 2017-03   Library Evolution, Library Adopted 2017-03
P0608R0 A sane variant converting constructor (LEWG 227) Zhihao Yuan 2017-03-02 2017-03   Library Evolution, Library  
P0609R0 Attributes for Structured Bindings Aaron Ballman 2017-03-04 2017-03   Evolution  
P0610R0 C++ Standard Library "Review" Issues Resolved in Kona Marshal Clow 2017-03-04 2017-03   Library Adopted 2017-03
P0611R0 More Better Operators Lawrence Crowl 2017-03-18 2017-03   Evolution  
P0612R0 NB comment CH 2: volatile Jens Maurer 2017-02-27 2017-03   WG21 Adopted 2017-03
P0613R0 NB comment GB15: Resolution of Core Issue 2011 William M. Miller 2017-02-27 2017-03   WG21 Adopted 2017-03
P0614R0 Range-based for statements with initializer Thomas Köppe 2017-03-18 2017-03   Evolution, Core  
P0615R0 Renaming for structured bindings Jens Maurer 2017-03-01 2017-03   WG21 Adopted 2017-03
P0618R0 Deprecating <codecvt> Alisdair Meredith 2017-03-02 2017-03   Library Adopted 2017-03
P0619R0 Reviewing Deprecated Facilities of C++17 for C++20 Alisdair Meredith, Stephan T. Lavavej, Tomasz Kamiński 2017-03-17 2017-03   Evolution  
P0620R0 Drafting for class template argument deduction issues Jason Merrill 2017-03-02 2017-03   Core Adopted 2017-03
P0621R0 Ready Ranges TS Issues Casey Carter 2017-03-02 2017-03   Library  
P0622R0 Additional Core Language Working Group "ready" and "tentatively ready" Issues for the February, 2017 (Kona) meeting William M. Miller 2017-03-03 2017-03   Core Adopted 2017-03
P0623R0 Final C++17 Parallel Algorithms Fixes Bryce Adelstein Lelbach, Alisdair Meredith, Anthony Williams 2017-03-03 2017-03   Concurrency, Library Evolution, Library Adopted 2017-03
P0624R0 Default constructible stateless lambdas Louis Dionne 2017-03-20 2017-03   Evolution  
P0625R0 C++ Standard Library Issues Resolved Directly In Kona Marshal Clow 2017-03-03 2017-03   Library  
P0627R0 Attribute to mark unreachable code Melissa Mears 2017-03-14 2017-03   Evolution  
P0629R0 Module interface vs. imiplementation Gabriel Dos Reis, Jason Merrill, Nathan Sidwell 2017-03-17 2017-03   Evolution  
P0630R0 To boldly suggest a pub crawl for C++ Toronto Duncan P.N. Exon Smith 2017-03-19 2017-03   WG21  
P0631R0 Math Constants Lev Minkovsky 2017-03-19 2017-03   Library Evolution, Numerics  
P0632R0 Proposal of [[uninitialized]] attribute Jonathan Müller 2017-01-19 2017-03   Evolution  
P0633R0 Exploring the design space of metaprogramming and reflection Daveed Vandevoorde, Louis Dionne 2017-03-20 2017-03   Reflection  
P0634R0 Down with `typename`! Daveed Vandevoorde 2017-03-05 2017-03   Evolution  


Clang-Tidy, part 1: Modernize your source code using C++11/C++14--Kevin Funk

Do you know what is clang-tidy and how to use it?

Clang-Tidy, part 1: Modernize your source code using C++11/C++14

by Kevin Funk

From the article:

This blog series will introduce the clang-tidy utility from the Clang/LLVM project and show how to use it to automatically refactor C++ source code and integrate with your build system, as well as how to use the tool on other platforms than Unices.

Singleton revisited--Giuseppe Puoti

The use of Singleton is often justified by the will of being able to easily refer to a unique object from any point. Giuseppe Puoti describes an alternative:

Singleton revisited

by Giuseppe Puoti

From the article:

It happens quite often to deal with those annoying objects, used everywhere in your applications. This may be because of a poorly designed application but, sometime, it is simply an inevitable condition...

CppCast Episode 93: C++ Game Development at Blizzard with Ben Deane

Episode 93 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Ben Deane from Blizzard Entertainment to talk about C++ game development and more.

CppCast Episode 93: C++ Game Development at Blizzard with Ben Deane

by Rob Irving and Jason Turner

About the interviewee:

Ben started in the games industry in the UK in 1995, when he got hired at Bullfrog straight after graduating from university. While there he worked on several games there like Syndicate Wars and Dungeon Keeper. By the late 1990s he had stopped using C and was allowed to use C++ at work. In 2001 he moved to Kuju Entertainment and did a couple of games on XBox and PS2, then in 2003 he was hired by EA again and moved to Los Angeles, where he worked on the Medal of Honor series. He's always been a network game programmer, and in 2008 after a project cancellation at EA, he joined Blizzard as a lead engineer on, working on technology for all of Blizzard's games. Today he's a principal engineer at Blizzard and the technical lead on the desktop application. He's also a functional programming hobbyist who tries to use what he learns in Haskell to write better C++, and in recent years he has given several C++ conference talks at C++Now and CppCon.

PVS-Studio: searching software weaknesses

As we check Apache HTTP Server, we see bugs crawling everywhere across the code. But wait! These are not just bugs, but security weaknesses!

PVS-Studio: searching software weaknesses

by Andrey Karpov, Phillip Khandeliants

From the article:

PVS-Studio has always been able to detect a large number of various security defects (potential vulnerabilities) in the program code. However, historically, we positioned PVS-Studio as a tool to search for errors. We see a trend in the software development to look for vulnerabilities in the code, although it is just the same. It seems to us that it is high time to do the rebranding of our static analyzer PVS-Studio. We will start with Common Weakness Enumeration (CWE). This article provides a table that shows matches of PVS-Studio diagnostic warnings of with the classifier. The table will be gradually updated and changed, but we can already use the table to write articles about security defects detected in projects. We suppose it would attract more attention of the software security specialists.