June 2020

Transforming C to C++

New video on using the latest version of DeepEnds.

Transforming C to C++

by Zeb Mason

About the video:

Performs a clustering analysis on a C call graph then manipulates it within Visual Studio to prototype a class.

Part 2: Ray Tracing in one weekend with SYCL

SYCL is an open standard developed by the Khronos™ Group that enables developers to write code for heterogeneous systems using standard C++.

Ray-tracing in One Weekend with SYCL Part 2

    by Codeplay

About the article

C++ Ray-Tracing in a Weekend by Peter Shirley is a great resource to start learning about ray-tracers and how to implement one, and at the same time providing all the source code in a GitHub repository . You can find more information about his books on ray-tracing techniques with accompanying implementations on his blog, and you can also download the books as .pdf, or load them on your Kindle device for free from the GitHub project.

This post follows on from the first part of my blog, where I showed how the I adapted the code from "Ray Tracing in one weekend" to increase performance using SYCL™. The first area I tackled was the rendering.

In this second post I'll show how to use SYCL to improve the performance of this code further using some interesting techniques.

CopperSpice: Copy Elision

New video on the CopperSpice YouTube Channel:

Copy Elision

by Barbara Geller and Ansel Sermersheim

About the video:

In this video, we look at what copy elision is, and in the process define elision and what it means to copy. We also talk about why you would want to elide copies, and why this feature needed explicit permission in the standard.

Please take a look and remember to subscribe!

Modules Present and Future--CppCast

It will change things.

Modules Present and Future

by CppCast

From the article:

Rob and Jason are joined by Gabriel Dos Reis from Microsoft. They first discuss the recent articles about Microsoft switching from C++ to Rust and let Gaby set the record straight. Then Gaby talks about the final state of Modules, how Microsoft is using them internally, and Gaby’s plans for the future of Modules and much more.

2020-06 mailing available

The 2020-06 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P1401R3 Narrowing contextual conversions to bool Andrzej Krzemieński 2020-05-27 2020-06 P1401R2 EWG Evolution
P1450R3 Enriching type modification traits Vincent Reverdy 2020-06-15 2020-06 P1450R2 LWG Library
P1467R4 Extended floating-point types and standard names David Olsen 2020-06-14 2020-06 P1467R3 EWG Evolution,LEWG Library Evolution
P1468R4 Fixed-layout floating-point type aliases David Olsen 2020-06-14 2020-06 P1468R3 LEWG Library Evolution
P1642R3 Freestanding Library: Easy [utilities], [ranges], and [iterators] Ben Craig 2020-05-24 2020-06 P1642R2 LEWG Library Evolution
P1944R1 Add Constexpr Modifiers to Functions in cstring and cwchar Headers Daniil Goncharov 2020-05-26 2020-06 P1944R0 SG16 Unicode,LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P1949R4 C++ Identifier Syntax using Unicode Standard Annex 31 Steve Downey 2020-06-05 2020-06 P1949R3 SG16 Unicode,EWG Evolution,CWG Core
P1990R1 Add operator[] to std::initializer_list Daniil Goncharov 2020-05-26 2020-06 P1990R0 LEWG Library Evolution,LWG Library
P2025R1 Guaranteed copy elision for return variables Anton Zhilin 2020-06-17 2020-06 P2025R0 EWG Evolution,CWG Core
P2034R2 Partially Mutable Lambda Captures Ryan McDougall 2020-06-12 2020-06 P2034R1 EWGI SG17: EWG Incubator
P2037R1 String's gratuitous assignment Andrzej Krzemieński 2020-06-15 2020-06 P2037R0 LEWG Library Evolution
P2093R0 Formatted output Victor Zverovich 2020-06-13 2020-06   SG16 Unicode,LEWG Library Evolution
P2138R2 Rules of Design<=>Wording engagement Ville Voutilainen 2020-06-15 2020-06 P2138R1 EWG Evolution,LEWG Library Evolution
P2139R1 Reviewing Deprecated Facilities of C++20 for C++23 Alisdair Meredith 2020-06-15 2020-06 P2139R0 EWG Evolution,LEWG Library Evolution
P2141R0 Aggregates are named tuples Antony Polukhin 2020-05-27 2020-06   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator,EWG Evolution,LEWG Library Evolution,LWG Library
P2146R1 Modern std::byte stream IO for C++ Amanda Kornoushenko 2020-06-17 2020-06 P2146R0 LEWGI SG18: LEWG Incubator
P2152R0 Querying the alignment of an object Inbal Levi 2020-06-15 2020-06   EWGI SG17: EWG Incubator,EWG Evolution,CWG Core
P2161R1 Remove Default Candidate Executor Robert Leahy 2020-06-12 2020-06 P2161R0 SG4 Networking
P2164R1 views::enumerate Corentin Jabot 2020-06-14 2020-06 P2164R0 LEWG Library Evolution
P2166R0 A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr Yuriy Chernyshov 2020-05-19 2020-06   LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P2176R0 A different take on inexpressible conditions Andrzej Krzemieński 2020-05-27 2020-06   SG21 Contracts
P2178R0 Misc lexing and string handling improvements Corentin Jabot 2020-06-15 2020-06   SG16 Unicode,EWG Evolution
P2179R0 SG16: Unicode meeting summaries 2020-01-08 through 2020-05-27 Tom Honermann 2020-06-02 2020-06   SG16 Unicode
P2181R0 Correcting the Design of Bulk Execution Jared Hoberock 2020-06-14 2020-06   SG1 Concurrency and Parallelism
P2182R0 Contract Support: Defining the Minimum Viable Feature Set Andrzej Krzemieński 2020-06-15 2020-06   SG21 Contracts
P2184R0 Thriving in a crowded and changing world: C++ 2006-2020 Bjarne Stroustrup 2020-06-12 2020-06   All of WG21
P2185R0 Contracts Use Case Categorization Caleb Sunstrum 2020-06-14 2020-06   SG21 Contracts
P2187R0 std::swap_if, std::predictable Nathan Myers 2020-06-18 2020-06   LEWGI SG18: LEWG Incubator,Direction Group
P2188R0 Zap the Zap: Pointers should just be bags of bits Anthony Williams 2020-06-15 2020-06   EWG Evolution

C++20: The Unspoken Features -- Michele Caini

Modules, coroutines, concepts, and ranges, oh my. Here comes C++ 20. The big four new features are getting all the buzz, but what about the smaller features? 

C++20: The Unspoken Features

by Michele Caini

From the article:

What's new in C++ besides the big four? A lot of things. We certainly won't be able to see them all in one post. Among the most interesting (at least from my point of view) are the following:

  • Designated initializers
  • Spaceship operator
  • Extended range-based for statement
  • Pack expansions in lambda init-capture
  • Template parameter lists on lambdas
  • String literals as template parameters
  • consteval and constinit keywords
  • Constexpr containers
  • Constexpr virtual functions