News

C++ Reflection TS: A First Look -- Clément Pirelli

The Reflection TS was blessed with an example implementation recently, available on Compiler Explorer. Clément Pirelli gave it a spin and wrote a small post about what he found.

C++ Reflection TS: A First Look

by Clément Pirelli

From the article:

In this post, I’ll explain the basic ideas of the specification, how to write a simple generic “enum to string” function and go into a bit more detail with a proof-of-concept serialization function.

Modernizing your code with C++20 -- Phil Nash

C++20 is here! In fact, as we head towards 2022, it’s been here a while. It may surprise some, but we’re only a few months from a freeze on new proposals for C++23! But let’s not get ahead of ourselves. C++20 is a big release - at least the biggest since C++11 - some have said it's the biggest since the first standard in 1998!

Modernizing your code with C++20

by Phil Nash

From the article:

Another possible surprise is that support for C++20 is currently better in GCC and MSVC++ than in Clang. Nonetheless, significant chunks of the new language and library features are widely available across the three major compilers, already. Many of them, including some less well known features, are there to make common things safer and easier. So we’ve been hard at work implementing analyzer rules to help us all take full advantage of the latest incarnation of “Modern C++”. This is just the start, but we already have 28 C++20-specific rules in the latest releases of all our products (with many more in development).

Let’s take a peek at some of them.

SonarLint now supports Visual Studio 2022 for your C and C++ projects -- Marco Comi

The latest release of SonarLint supports Visual Studio 2022 and enables users to detect and fix coding issues in their C and C++ code. Enjoy the best-in-class capabilities of Visual Studio and SonarLint for your modern code development. SonarLint is a free static analysis extension and directly installable for VS 2022 from the Marketplace.

SonarLint for Visual Studio: v5.0

By Marco Comi

From the article:

The new Visual Studio version brings many new features and improvements. Starting from version 5.0 of SonarLint you are able to use our plugin in Visual Studio 2022 for all the languages we already support. The VS Marketplace page for the new version is here.

 

 

Introducing CLion 2021.3 -- Anastasia Kazakova

CLion 2021.3 has become an even easier-to-use, more customizable, and more comprehensive IDE for unleashing the power of C and C++.

CLion 2021.3: New Remote Development, Better Data Views in Debugger, Docker Toolchain, Custom Compiler, Type Hints, and More

by Anastasia Kazakova

From the article:

CLion 2021.3 release is here! Check out the highlights and read the post for more details.

  • New remote development mode (headless remote machine and thin local client)
  • Debugger:
    • Better data views in debugger
    • RTOS thread views
  • Toolchain updates
    • Docker toolchain
    • Custom compiler
    • Environment script
    • Windows-specific enhancements
    • Ninja as the default CMake generator
  • Type hints in the editor
  • More powerful and accurate code analysis

Conditional Members--Barry Revzin

Did you feel the need?

Conditional Members

by Barry Revzin

From the article:

I’d previously written a post about if constexpr (and how it’s not broken). I argued in that post how, broadly speaking, C++20 gives you the tools to solve the problems you want, even if they work a bit differently to D’s static if (with one notable exception, which this post greatly expands on). Now, over the past couple years, I’ve been working on a project that really is a deep dive into what Andrei calls “Design by Introspection.” This approach (for lack of a better definition), relies on conditioning functionality based on template parameters...

2021-11 Mailing Available

The 2021-11 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P0009R14 MDSPAN Christian Trott 2021-11-14 2021-11 P0009R13 LEWG Library Evolution,LWG Library
P0323R11 std::expected JF Bastien 2021-11-16 2021-11 P0323R10 LWG Library
P0447R17 Introduction of std::hive to the standard library Matt Bentley 2021-11-03 2021-11 P0447R16 SG14 Low Latency,LEWG Library Evolution,All of WG21
P0533R9 constexpr for cmath and cstdlib Oliver Rosten 2021-11-12 2021-11 P0533R8 CWG Core,LWG Library
P1413R3 Deprecate std::aligned_storage and std::aligned_union CJ Johnson 2021-11-22 2021-11 P1413R2 LEWG Library Evolution,LWG Library
P1467R6 Extended floating-point types and standard names David Olsen 2021-11-10 2021-11 P1467R5 EWG Evolution,LEWG Library Evolution
P1467R7 Extended floating-point types and standard names David Olsen 2021-11-24 2021-11 P1467R6 EWG Evolution,LEWG Library Evolution
P1494R2 Partial program correctness S. Davis Herring 2021-11-12 2021-11 P1494R1 SG22 Compatability,EWG Evolution,LEWG Library Evolution,CWG Core
P1774R4 Portable assumptions Timur Doumler 2021-11-17 2021-11 P1774R3 EWG Evolution
P1854R2 Conversion to literal encoding should not lead to loss of meaning Corentin Jabot 2021-11-23 2021-11 P1854R1 SG16 Unicode
P1899R1 stride_view Christopher Di Bella 2021-11-08 2021-11 P1899R0 SG9 Ranges,LEWG Library Evolution
P2071R1 Named universal character escapes Tom Honermann 2021-11-09 2021-11 P2071R0 SG16 Unicode,EWG Evolution
P2093R10 Formatted output Victor Zverovich 2021-11-13 2021-11 P2093R9 LEWG Library Evolution
P2198R3 Freestanding Feature-Test Macros and Implementation-Defined Extensions Ben Craig 2021-11-12 2021-11 P2198R2 SG10 Feature Test,LEWG Library Evolution
P2249R3 Mixed comparisons for smart pointers Giuseppe D'Angelo 2021-11-16 2021-11 P2249R2 LEWG Library Evolution
P2273R3 Making std::unique_ptr constexpr Andreas Fertig 2021-11-09 2021-11 P2273R2 LWG Library
P2278R2 cbegin should always return a constant iterator Barry Revzin 2021-11-16 2021-11 P2278R1 LEWG Library Evolution
P2286R3 Formatting Ranges Barry Revzin 2021-11-16 2021-11 P2286R2 LEWG Library Evolution
P2302R1 std::ranges::contains Christopher Di Bella 2021-11-08 2021-11 P2302R0 SG9 Ranges
P2338R2 Freestanding Library: Character primitives and the C library Ben Craig 2021-11-11 2021-11 P2338R1 SG14 Low Latency,SG22 Compatability,LEWG Library Evolution
P2361R4 Unevaluated strings Corentin Jabot 2021-11-23 2021-11 P2361R3 EWG Evolution
P2388R4 Minimum Contract Support: either No_eval or Eval_and_abort Andrzej Krzemieński 2021-11-15 2021-11 P2388R3 SG21 Contracts,SG22 Compatability
P2407R1 Freestanding Library: Partial Classes Emil Meissner 2021-11-23 2021-11 P2407R0 LEWG Library Evolution
P2408R3 Ranges iterators as inputs to non-Ranges algorithms David Olsen 2021-11-08 2021-11 P2408R2 SG9 Ranges,LEWG Library Evolution
P2408R4 Ranges iterators as inputs to non-Ranges algorithms David Olsen 2021-11-16 2021-11 P2408R3 LEWG Library Evolution
P2441R1 views::join_with Barry Revzin 2021-11-16 2021-11 P2441R0 LEWG Library Evolution
P2443R1 views::chunk_by Tim Song 2021-11-19 2021-11 P2443R0 LWG Library
P2446R1 views::all_move Barry Revzin 2021-11-16 2021-11 P2446R0 LEWG Library Evolution
P2454R0 2021 November Library Evolution Polls Bryce Adelstein Lelbach 2021-11-03 2021-11   LEWG Library Evolution
P2461R1 Closure-based Syntax for Contracts Gašper Ažman 2021-11-15 2021-11 P2461R0 SG21 Contracts
P2467R0 Support exclusive mode for fstreams Jonathan Wakely 2021-11-15 2021-11   LEWG Library Evolution
P2477R1 Allow programmer to control and detect coroutine elision by static constexpr bool must_elide() and Chuanqi Xu 2021-10-25 2021-11 P2477R0 EWG Evolution,LEWG Library Evolution
P2477R2 Allow programmer to control and detect coroutine elision Chuanqi Xu 2021-11-14 2021-11 P2477R1 EWG Evolution,LEWG Library Evolution
P2483R0 Support Non-copyable Types for single_view Hui Xie 2021-10-26 2021-11   LEWG Library Evolution
P2484R0 Extending class types as non-type template parameters Richard Smith 2021-11-16 2021-11   EWG Evolution
P2485R0 Do not add value_exists and value_or to C++23 Jonathan Wakely 2021-11-01 2021-11   LEWG Library Evolution
P2486R0 Structured naming for function object and CPO values Kirk Shoop 2021-11-01 2021-11   LEWG Library Evolution
P2487R0 Attribute-like syntax for contract annotations Andrzej Krzemieński 2021-11-12 2021-11   SG21 Contracts,EWG Evolution
P2489R0 Library Evolution Plan for Completing C++23 Bryce Adelstein Lelbach 2021-11-09 2021-11   LEWG Library Evolution
P2490R0 Zero-overhead exception stacktraces Antony Peacock 2021-11-25 2021-11   LEWGI SG18: LEWG Incubator
P2491R0 Text encodings follow-up Jens Maurer 2021-11-15 2021-11   SG16 Unicode,LEWG Library Evolution
P2492R0 Attending C++ Standards Committee Meetings During a Pandemic René Ferdinand Rivera Morell 2021-11-09 2021-11   All of WG21
P2493R0 Missing feature test macros for C++20 core papers Barry Revzin 2021-11-15 2021-11   CWG Core