C++17 is feature complete

Enamex via Digitalmars-d digitalmars-d at puremagic.com
Thu Jul 7 15:24:43 PDT 2016


Some updates:
https://www.reddit.com/r/cpp/comments/4rj7us/trip_report_c_standards_meeting_in_oulu_june_2016/

Especially interesting are the mentions of 'accepted' 
features/proposals for 'C++20', including:
- `operator.` (opDispatch) which /might/ even make it into C++17 
given push by some international body; also includes some facets 
of `alias this` as it's hoped to be a core part of some of the 
reflection proposals [1]
- designated initializers (from C) (D's static initializers but 
tied to struct names and usable anywhere `MyStruct{ field2: 0, 
field1: 'a' }`;

and some requiring 'further thought' like:
- discriminated unions (even full-blown pattern matching); [2]
- 'overload sets as function arguments' (basically the delegate 
pattern in D for passing a lazily determined member function 
pointer (or an untyped closure in general));
- contracts ('expects = in' and 'ensures = out()' but they take 
one big boolean expression; a bit more complicated than in D, but 
they're adding them in, not taking them out) [3]
- 'parameter packs outside templates' which could go several ways 
from being basically native tuples with dedicated syntax, to 
almost (? not sure about differences in the proposal's 
specification vs behavior in D) the same thing as alias tuples in 
D now. [4]

I tried to focus on stuff already in D and stuff people are 
asking to add to D and the differences between the languages in 
them. I'll stop if it's deemed too off-topic :/

[1] http://wg21.link/p0252
     http://wg21.link/p0352
     http://wg21.link/p0060
[2] http://wg21.link/p0095r1
[3] 
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4415.pdf
[4] 
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0341r0.html


More information about the Digitalmars-d mailing list