October 2016

PVS-Studio C/C++ static code analyzer for Linux

We released the first version of PVS-Studio analyzer for Linux. Now Linux developers are getting a new powerful tool to fight bugs in the code.

PVS-Studio for Linux

From the news:

Starting with the 6.10 version, PVS-Studio analyzer supports not only Windows, but the Linux too.

PVS-Studio performs static code analysis and generates a report that helps a programmer find and fix bugs. PVS-Studio performs a wide range of code checks, it is also useful to search for misprints and Copy-Paste errors. Demonstrative examples of such errors: V501, V517, V522, V523, V571, V611.

The new Linux version (.deb, .rpm, .tgz) is available for download on the page: http://www.viva64.com/en/pvs-studio-download-linux/

Announcing the lounge track for Meeting C++ 2016

Something new at Meeting C++ this year: a track dedicated to meetups!

Announcing the Lounge Track

by Jens Weller

From the Article:

If you look at the schedule, you might notice two changes. Most visible is that there is now a floor plan for the conference. The other one is very subtle: the breaks now have a hint for a 6th track.

ACCU 2017 Call for session -- ACCU

The ACCU 2017 is now putting together its program, and they want you to speak on C++. The ACCU has a strong C++ track, though it is not a C++-only conference. If you have something to share, check out their

Call for Sessions

by the ACCU

From the article:

We have a long tradition of high quality sessions covering many aspects of software development, from programming languages (e.g. C, C++, D, C#, Go, Rust, Clojure, Erlang, Groovy, Haskell, Java, JavaScript, ECMAScript, Python, Ruby, Scala, etc.), and technologies (libraries, frameworks, databases, etc.) to subjects about the wider development environment such as testing, architecture and design, development process, analysis, patterns, project management, and softer aspects such as team building, communication and leadership. See the 2016 schedule for examples.

The Call for Sessions lasts 7 weeks and will close at midnight Friday 2016-12-02.

2016-10 Pre-Issaquah mailing available

The 2016-10 mailing of new standards papers is now available.

NOTE: A number of these papers have already been publicized on this blog. This is the complete list including ones not previously publicized.


2016-10 pre-Issaquah
N4607 Toronto Meeting Information Michael Wong 2016-07-18 2016-10 WG21
N4608 PL22.16/WG21 draft agenda: 7-12 Nov 2016, Issaquah, WA, US Clark Nelson 2016-07-21 2016-10 WG21
N4609 Business Plan and Convener's Report Herb Sutter 2016-08-11 2016-10 WG21
N4610 Working Draft, Extensions to C++ for Modules Gabriel Dos Reis 2016-10-16 2016-10 WG21
N4611 Editor's Report for the Modules TS Gabriel Dos Reis 2016-10-16 2016-10 WG21
N4612 Working Draft, C++ extensions for Networking Jonathan Wakely 2016-10-17 2016-10 WG21
N4613 Networking TS - Editor's Report Jonathan Wakely 2016-10-17 2016-10 WG21
N4614 WG21 telecon meeting: Pre-Issaquah Herb Sutter 2016-10-01 2016-10 WG21
P0009R3 Polymorphic Multidimensional Array View H. Carter Edwards, Bryce Lelbach, Christian Trott, Mauro Bianco, Robin Maffeo, Ben Sander 2016-10-14 2016-10 P0009R2 Library Evolution
P0019R3 Atomic View H. Carter Edwards, Hans Boehm, Olivier Giroux, James Reus 2016-10-14 2016-10 P0019R2 Library Evolution, Concurrency
P0020R3 Floating Point Atomic View H. Carter Edwards, Hans Boehm, Olivier Giroux, JF Bastien, James Reus 2016-10-14 2016-10 P0020R2 Library Evolution, Concurrency
P0022R2 Proxy Iterators for the Ranges Extensions Eric Niebler 2016-10-17 2016-10 P0022R1 Library
P0037R3 Fixed-point real numbers John McFarlane, Michael Wong 2016-10-17 2016-10 P0037R2 Numerics, SG14, Library Evolution
P0051R2 C++ generic overload function Vicente J. Botet Escriba 2016-10-13 2016-10 P0051R1 Library Evolution
P0057r6 Wording for Coroutines Gor Nishanov 2016-10-16 2016-10 P0057R5 Core, Library
P0059R2 Add rings to the Standard Library Guy Davidson, Arthur O'Dwyer, Joe Best-Rotheray 2016-10-14 2016-10 P0059R1 SG14, Library Evolution
P0098R1 Towards Implementation and Use of memory order consume Paul E. McKenney, Torvald Riegel, Jeff Preshing, Hans Boehm, Clark Nelson, Olivier Giroux, Lawrence Crowl 2016-01-04 2016-10 P0098R0 Concurrency
P0099R1 A low-level API for stackful context switching Oliver Kowalke, Nat Goodspeed 2016-10-16 2016-10 P0099R0 Concurrency
P0165R3 C++ Standard Library Issues to be moved in Issaquah Marshall Clow 2016-10-17 2016-10 P0165R2 Library
P0187R1 Proposal/Wording for Bit-field Default Member Initializer Syntax Andrew Tomazos 2016-06-28 2016-10 P0187R0 Evolution
P0194R2 Static reflection Matúš Chochlík, Axel Naumann, David Sankel 2016-10-15 2016-10 P0194R1 Reflection, Evolution
P0195R1 Modernizing using-declarations Robert Haberlach 2016-10-15 2016-10 P0195R0 Core
P0196R2 Generic none() factories for Nullable types Vicente J. Botet Escriba 2016-10-12 2016-10 P0196R1 Library Evolution
P0201R1 An indirect value-type for C++ Jonathan Coe 2016-10-13 2016-10 P0201R0 Library Evolution
P0214R2 Data-Parallel Vector Types & Operations Matthias Kretz 2016-10-17 2016-10 P0214R1 Library Evolution
P0233R2 Hazard Pointers: Safe Reclamation for Optimistic Concurrency Maged M. Michael, Michael Wong, Paul McKenney, Arthur O'Dwyer 2016-10-17 2016-10 P0233R1 Concurrency, SG14, Library Evolution
P0237R3 Wording for fundamental bit manipulation utilities Vincent Reverdy, Robert J. Brunner 2016-10-17 2016-10 P0237R2 Library Evolution, SG14, Numerics
P0249R2 Input Devices For 2D Graphics Brett Searles, Michael McLaughlin, Jason Zink 2016-10-07 2016-10 P0249R1 SG13
P0252R2 Operator Dot Wording Bjarne Stroustrup, Gabriel Dos Reis 2016-10-16 2016-10 P0252R1 Evolution, Core
P0261R1 C++ Distributed Counters Lawrence Crowl 2016-10-13 2016-10 P0261R0 Concurrency
P0262R1 A Class for Status and Optional Value Lawrence Crowl, Chris Mysen 2016-10-15 2016-10 P0262R0 Evolution
P0279R1 Read-Copy Update (RCU) for C++ Paul E. McKenney 2016-08-25 2016-10 P0279R0 Concurrency
P0290R1 apply() for synchronized_value<T> Anthony Williams 2016-06-23 2016-10 P0290R0 Concurrency
P0293R0 Template deduction for nested classes S. Davis Herring 2016-10-14 2016-10 Evolution
P0315R1 Lambdas in unevaluated context Louis Dionne 2016-08-01 2016-10 P0315R0 Evolution
P0317R1 Directory Entry Caching for Filesystem Beman Dawes 2016-10-15 2016-10 P0317R0 Library
P0320R1 Thread Constructor Attributes Vicente J. Botet Escriba 2016-10-12 2016-10 P0320R0 Library Evolution, Concurrency
P0323R1 A proposal to add a utility class to represent expected object (Revision 3) Vicente J. Botet Escriba 2016-10-12 2016-10 P0323R0 Library Evolution
P0327R1 Product types access Vicente J. Botet Escriba 2016-10-16 2016-10 P0327R0 Evolution, Reflection, Library Evolution
P0329R1 Designated Initialization Wording Tim Shen, Richard Smith 2016-09-26 2016-10 P0329R0 Core
P0338R1 C++ generic factories Vicente J. Botet Escriba 2016-10-12 2016-10 P0338R0 Library Evolution
P0339R1 polymorphic_allocator<void> as a vocabulary type Pablo Halpern, Dietmar Kühl 2016-10-15 2016-10 P0339R0 Library Evolution
P0347R1 Simplifying simple uses of <random> R. "Tim" Song, Melissa O'Neill 2016-10-16 2016-10 P0347R0 Numerics, Library Evolution
P0353R1 Unicode Friendly Encoding Conversions for the Standard Library Beman Dawes 2016-10-14 2016-10 P0353R0 Library Evolution
P0355R1 Extending <code><chrono></code> to Calendars and Time Zones Howard Hinnant 2016-10-16 2016-10 P0355R0 Library Evolution
P0356R1 Simplified partial function application Tomasz Kamiński 2016-10-13 2016-10 P0356R0 Library Evolution
P0357R1 reference_wrapper for incomplete types Tomasz Kamiński 2016-09-29 2016-10 P0357R0 Library Evolution
P0361R1 Invoking Algorithms asynchronously Hartmut Kaiser, Thomas Heller, Bryce Adelstein Lelbach, John Biddiscombe, Michael Wong 2016-10-15 2016-10 P0361R0 Concurrency, SG14, Library Evolution
P0370R2 Ranges TS Design Updates Omnibus Casey Carter, Eric Niebler 2016-10-17 2016-10 P0370R1 Library
P0381R1 Numeric Width John McFarlane, Michael Wong 2016-10-17 2016-10 P0381R0 Numerics, SG14
P0385R1 Static reflection: Rationale, design and evolution Matúš Chochlík, Axel Naumann, David Sankel 2016-10-15 2016-10 P0385R0 Reflection, Evolution
P0403R0 Literal suffixes for basic_string_view Marshall Clow 2016-09-13 2016-10 Library Evolution
P0406R1 Intrusive Containers Hal Finkel 2016-10-17 2016-10 P0406R0 Library Evolution
P0409R1 Allow lambda capture [=, this] Thomas Koeppe 2016-10-11 2016-10 P0409R0 Evolution
P0412R0 Benchmarking primitives Mikhail Maltsev 2016-07-05 2016-10 Evolution, Library Evolution
P0414R1 Merging shared_ptr changes from Library Fundamentals to C++17 Jonathan Wakely 2016-10-06 2016-10 P0414R0 Library
P0415R0 Constexpr for std::complex Antony Polukhin 2016-08-10 2016-10 Library Evolution
P0416R1 Operator Dot (R3) Bjarne Stroustrup, Gabriel Dos Reis 2016-10-16 2016-10 P0416R0 Evolution, Core
P0418R1 Fail or succeed: there is no atomic lattice JF Bastien 2016-08-02 2016-10 P0418R0 Concurrency, Library
P0421R0 Static class constructor Mariusz Moczala 2016-09-14 2016-10 Evolution
P0422R0 Out-of-Thin-Air Execution is Vacuous Paul E. McKenney, Alan Jeffrey, Ali Sezgin, Tony Tye 2016-07-27 2016-10 Concurrency
P0423R0 Variable templates for Networking TS traits Jonathan Wakely 2016-08-04 2016-10 Library
P0424R0 Reconsidering literal operator templates for strings Louis Dionne 2016-08-15 2016-10 Evolution
P0426R0 Constexpr for std::char_traits Antony Polukhin 2016-08-10 2016-10 Library Evolution
P0428R0 Familiar template syntax for generic lambdas Louis Dionne 2016-09-08 2016-10 Evolution
P0429R0 A Standard flat_map Zach Laine 2016-08-31 2016-10 Library, Library Evolution
P0430R0 File system library on non-POSIX-like operating systems Jason Liu, Hubert Tong 2016-09-12 2016-10 Library, Library Evolution
P0432R0 Implicit and Explicit Default Comparison Operators David Stone 2016-09-18 2016-10 Evolution
P0433R0 Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library Mike Spertus, Walter E. Brown 2016-10-16 2016-10 Library Evolution, Library, Core
P0434R0 Portable Interrupt Library Brett Searies 2016-10-09 2016-10 SG13
P0435R0 Resolving LWG Issues re common_type Walter E. Brown 2016-10-14 2016-10 Library
P0436R0 An Extensible Approach to Obtaining Selected Operators Walter E. Brown 2016-10-10 2016-10 Evolution
P0437R0 Numeric Traits for the Next Standard Library Walter E. Brown 2016-10-14 2016-10 Numerics, Library Evolution
P0438R0 Toward a <random> Technical Specification Walter E. Brown 2016-10-05 2016-10 Numerics, Library Evolution
P0439R0 Make memory_order a scoped enumeration Jonathan Wakely 2016-10-06 2016-10 Concurrency, Library Evolution
P0440R0 Floating Point Atomic View H. Carter Edwards, Hans Boehm, Olivier Giroux, JF Bastien, James Reus 2016-10-14 2016-10 Concurrency, Library Evolution
P0441R0 Ranges: Merging Writable and MoveWritable Casey Carter, Eric Niebler 2016-10-17 2016-10 Library Evolution, Library
P0443R0 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards 2016-10-17 2016-10 Concurrency, SG14, Library Evolution
P0444R0 Unifying suspend-by-call and suspend-by-return Nat Goodspeed 2016-10-14 2016-10 Concurrency, Evolution
P0445R0 SG14: Low Latency Meeting Minutes 2016/09/21-2016/10/13 Michael Wong 2016-10-16 2016-10 SG14
P0446R0 SG5: Transactional Memory (TM) Meeting Minutes 2016/07/18-2016/10/10 Michael Wong 2016-10-16 2016-10 SG5
P0447R0 Introduction of std::colony to the standard library Matthew Bentley 2016-10-16 2016-10 Library Evolution, SG14
P0448R0 A strstream replacement using span<charT> as Peter Sommerlad 2016-10-14 2016-10 Library Evolution, Library
P0451R0 Future-Proofing Parallel Algorithms Exception Handling Bryce Adelstein Lelbach, Alisdair Meredith 2016-10-14 2016-10 Concurrency, Library Evolution, Library
P0452R0 Binary transform_reduce(): The Missing Overload Bryce Adelstein Lelbach 2016-10-14 2016-10 Concurrency, Library Evolution, Library
P0454R0 Wording for a Minimal mdspan Bryce Adelstein Lelbach, H. Carter Edwards 2016-10-10 2016-10 Library Evolution, Library
P0457R0 String Prefix and Suffix Checking Mikhail Maltsev 2016-10-09 2016-10 Library Evolution
P0458R0 Checking for Existence of an Element in Associative Containers Mikhail Maltsev 2016-10-09 2016-10 Library Evolution
P0459R0 C++ Extensions for Ranges, Speculative Combined Proposal Document Eric Niebler, Casey Carter 2016-10-15 2016-10 Library Evolution
P0460R0 Flat containers wording Sean Middleditch 2016-10-15 2016-10 Library Evolution
P0461R0 Proposed RCU C++ API Paul E. McKenney, Maged Michael, Michael Wong, Isabella Muerte, Arthur O'Dwyer 2016-10-16 2016-10 Concurrency
P0462R0 Marking memory order consume Dependency Chains Hans Boehm, Clark Nelson, Olivier Giroux, Lawrence Crowl, JF Bastien, Micheal Wong 2016-10-13 2016-10 Concurrency
P0463R0 endian, Just endian Howard Hinnant 2016-10-16 2016-10 Library Evolution
P0464R0 Revisiting the meaning of "foo(ConceptName,ConceptName)" Tony Van Eerd, Botond Ballo 2016-10-11 2016-10 Evolution
P0465R0 Procedural Function Interfaces Lisa Lippincott 2016-10-16 2016-10 Evolution
P0466R0 Layout-compatibility and Pointer-interconvertibility Traits Lisa Lippincott 2016-10-15 2016-10 Library Evolution
P0467R0 Iterator Concerns for Parallel Algorithms Alisdair Meredith 2016-10-13 2016-10 Concurrency, Library
P0468R0 A Proposal to Add an Intrusive Smart Pointer to the C++ Standard Library Isabella Muerte 2016-10-15 2016-10 SG14, Library Evolution
P0469R0 Sample in place R. "Tim" Song 2016-10-17 2016-10 Library Evolution
P0471R0 Single argument std::inserter David Sankel 2016-10-14 2016-10 Library Evolution
P0472R0 Move 'std::monostate' to <utility> David Sankel 2016-10-14 2016-10 Library Evolution
P0473R0 + for std::vector concatenation David Sankel 2016-10-13 2016-10 Library Evolution
P0474R0 Comparison in C++: Basic Facilities Lawrence Crowl 2016-10-15 2016-10 Evolution
P0475R0 LWG 2511: guaranteed copy elision for piecewise construction Jonathan Wakely 2016-10-14 2016-10 Library
P0476R0 Bit-casting object representations JF Bastien 2016-10-16 2016-10 Library Evolution, Library
P0477R0 std::monostate_function<> Matt Calabrese 2016-10-14 2016-10 Library Evolution
P0478R0 Template argument deduction for non-terminal function parameter packs Bruno Manganelli, Michael Wong, Simon Brand 2016-10-16 2016-10 Evolution
P0479R0 Attributes for Likely and Unlikely Branches Clay Trychta 2016-10-16 2016-10 Evolution, SG14
P0480R0 Explicit type checking with structured bindings Ville Voutilainen 2016-10-15 2016-10 Evolution
P0481R0 Bravely Default Tony Van Eerd 2016-10-15 2016-10 Evolution
P0482R0 char8_t: A type for UTF-8 characters and strings Tom Honermann 2016-10-17 2016-10 Evolution, Library Evolution
P0483R0 Extending Memory Management Tools, And a Bit More Patrice Roy 2016-10-15 2016-10 Library Evolution
P0484R0 Enhancing Thread Constructor Attributes Patrice Roy, Billy Baker, Arthur O'Dwyer 2016-10-16 2016-10 Library Evolution, Concurrency
P0485R0 Amended rules for Partial Ordering of function templates Bruno Manganelli, Michael Wong, Simon Brand 2016-10-16 2016-10 Evolution, Core
P0486R0 for_each_iter algorithm proposal Ildus Nezametdinov, Patrice Roy, 2016-10-15 2016-10 Library Evolution
P0487R0 Fixing operator>> (basic_istream&, CharT*) (LWG 2499) Zhihao Yuan 2016-10-17 2016-10 Library
P0488R0 WG21 Working paper: NB Comments, ISO/IEC CD 14882 Barry Hedquist 2016-10-18 2016-10 WG21
P0489R0 WG21 Working paper: Late Comments on CD 14882 Barry Hedquist 2016-10-18 2016-10 WG21


CppCast Episode 75: Robotics with Jackie Kay

Episode 75 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Jackie Kay from Marble to discuss the use of C++ in the Robotics industry and some of the unique challenges in Robotics development.

CppCast Episode 75: Robotics with Jackie Kay

by Rob Irving and Jason Turner

About the interviewee:

After spending her childhood wanting to become a novelist, Jackie switched over from writing stories to writing code during college. She graduated from Swarthmore College in 2014 with a Bachelor's in Computer Science and went on to work at the Open Source Robotics Foundation for two years, supporting Gazebo, a physics simulator for robotics R&D, and ROS, an open source application framework for robotics development. She recently started as an early employee at Marble in San Francisco, a startup working on autonomous delivery.

Jackie was a speaker at CppCon 2015 and 2016 and a volunteer at C++ Now 2016 and frequently attends the Bay Area ACCU meetups. Her hobbies include rock climbing, travelling, and reading (books, not just blog posts).

Visiting variants using lambdas (2: recursive variants) -- Vittorio Romeo

The article addresses the problem of lambda-based `std::variant` and `boost::variant` recursive visitation. Starting from the definition of a "recursive variant", it shows the concept and implementation behind a `make_recursive_visitor` variadic function that can be used to create "local" visitors by using lambdas.

visiting variants using lambdas - part 2

By Vittorio Romeo

From the article:

A "recursive" variant is a variant which can contain itself, and can be used to represent recursive structures. [...] Bringing algebraic data types from the functional programming world into C++ isn't enough - we're also going to adopt another powerful construct: the Y Combinator. [...] Now we can put everything together to finally visit a recursive variant using lambdas!

Tutorial: Emulating strong/opaque typedefs in C++--Jonathan Müller

Who would like this feature?

Tutorial: Emulating strong/opaque typedefs in C++

by Jonathan Müller

From the article:

Last week, I’ve released my type_safe library. I described it’s features in the corresponding blog post but because the blog post got rather long, I couldn’t cover one feature: strong typedefs.

Strong or opaque typedefs are a very powerful feature if you want to prevent errors with the type system - and as I’ve been advocating for, you want that. Unlike “normal” typedefs, they are a true type definition: they create a new type and allow stuff like overloading on them and/or prevent implicit conversions.