C++ Logo


Advanced search

Subject: [SG10] Missing feature-test macros since 2017
From: Barry Revzin (barry.revzin_at_[hidden])
Date: 2019-08-28 22:05:32

Hey all,

I updated the SD-6 document on isocpp.org: https://wg21.link/sd6. I'm still
having some CSS woes, but otherwise I updated the original document with
the feature-test macros that have been adopted since it was first written,
and organized the table by macro so that it's easy to see the history of
values (e.g. for CTAD:
Please let me know if anything is wrong there, or missing, or generally
could be improved.

Also, I went through the Straw Polls pages to see if we missed any macros
and made the following list. I tried to be as liberal as possible in
determining whether people would attempt to write code in both the old and
new way, so as to prefer to produce a list with some things we could reject
rather than miss more things... so I expect several of these may not
actually need a macro. Several of them didn't (like "down with typename" -
presumably you would just... write typename).

Let me know what you think. What belongs, what doesn't belong, any opinions
would be very helpful. I'm intending to write a paper for Belfast with
whatever we all decide is actually missing:

Toronto 2017 (201707)
- Designated Initializers (P0329R4)
- Familiar syntax for generic lambdas (P0428R2)
- make_shared for arrays (P0674R1)

Albuquerque 2017 (201711)
- Range-for with initializer (P0614R1, bump __cpp_range_based_for?)
- ADL and function templates (P0846R0)
- Default constructible and assignable lambdas (P0624R2)
- Lambdas in unevaluated contexts (P0315R4)
- remove_cvref (P0550R2)
- syncbuf (P0053R7)
- to_address (P0653R2)
- constexpr for complex (P0415R1)
- atomic shared_ptr (P0718R2)
- floating point atomic (P0020R6)
- starts_with/ends_with (P0457R2)

Jacksonville 2018 (201803)
- Pack expansion in lambda init-capture (P0780R2)
- Symmetry for <=> (P0905R1, should bump __cpp_impl_three_way_comparison?)
- Comparing unordered containers (P0809R0)
- <chrono> for calendars and timezones (P0355R7)
- Manipulators for synchronized buffered ostream (P0753R2, should bump
  whatever syncbuf adds)
- span (P0122R7)

Rapperswil 2018 (201806)
- Virtual calls in constexpr (P1064R0)
- contains (P0458R2)
- constexpr array comparison? (P1023R0)
- shift algorithms (P0769R2)
- identity (P0887R1)
- is_nothrow_convertible (P0758R1)
- integral power of 2 functions (P0556R3)

San Diego 2018 (201811)
- things that bump constexpr (try/catch P1002R1, dynamic_cast, polymorphic
typeid P1327R1, and change active member of union P1330R0)
- immediate functions (P1073R3)
- optional/variant propogate triviality (P0602R4)
- visit<R> (P0655R1)
- constexpr pointer_traits (P1006R1, possibly with __cpp_lib_constexpr)
- unwrap_ref_decay / unwrap_reference (P0318R1)
- sane variant converting ctor (P0608R3)
- assume_aligned (P1007R3)
- smart pointer with default init (P1020R1)
- should span be regular (P1085R2, just bump from the other span paper)

Kona 2019 (201902)
- extending structured bindings (P1091R3, P1381R1)
- <=> != == (should bump both the class nttp macro, and the 3-way
comparison macro)
- polymorphic_allocator (P0339R6)
- std:ssize (P1227R2)
- more span things (P1024R3)

Cologne 2019 (201907
- mothership library paper introduces a new macro for no reason (P1614R2),
should have just bumped __cpp_lib_three_way_comparison
- efficient stringbuf (P0408R7)


SG10 list run by herb.sutter at gmail.com