Slides against P2971R3
No implication for C++

Document number:
P3736R0
Date:
2025-06-27
Audience:
EWG
Project:
ISO/IEC 14882 Programming Languages — C++, ISO/IEC JTC1/SC22/WG21
Reply-To:
Jan Schultke <janschultke@gmail.com>
Source:
github.com/Eisenwave/cpp-proposals/blob/master/src/implication-slides.cow

This document has custom controls:

  • ,  ↓ : go to the next slide
  • ,  ↑ : go to previous slide

No implication for C++
P2971R3

Jan Schultke  |  Slides against P2971R3 — No implication for C++  |  EWG at Sofia 2025  |  Slide 1

Comparison

Status quo P29271R3
// from P2971R3: reference_type<D> || destructible_type<D>; not x.has_value() || *x == *y; // Mine: p == nullptr || p->valid; // from P2971R3: nonreference_type<D> => destructible_type<D>; x.has_value() => *x == *y; // Mine: p != nullptr => p->valid;
Jan Schultke  |  Slides against P2971R3 — No implication for C++  |  EWG at Sofia 2025  |  Slide 2

Adding operators is costly

Jan Schultke  |  Slides against P2971R3 — No implication for C++  |  EWG at Sofia 2025  |  Slide 3

Confusing fold expressions

Given (args => ...):

This is not a problem worth solving. and and or do this much better already!

Jan Schultke  |  Slides against P2971R3 — No implication for C++  |  EWG at Sofia 2025  |  Slide 4

Implication invites bugs

// i is equal or greater to 0 or is it? for (int i = 10; i => 0; --i) { // }
Jan Schultke  |  Slides against P2971R3 — No implication for C++  |  EWG at Sofia 2025  |  Slide 5