Is TR2 Going to be Released in C++17?

2019-01-26 16:46发布

问题:

There is lots of sweet stuff in TR2. Is that going to be in C++17?

I understand that TR1 was completed in 2005 and had to wait until C++11 to be standardized. But I also understand that TR2 is already complete?

My link to C++17 doesn't mention anything about TR2, but I am hoping...

回答1:

Maybe.

The point of TR (and now technical specifications) is to allow something to mature independent of the standard iteration process. They can publish a TS, see how it works, see if there are any problems in the implementation and/or use of the feature, and if everything works they can then "fold" it into the full standard.

Each TS is considered on its own merits to see if it will be folded into the next standard.

See http://isocpp.org/std/status (thanks @BenjaminLindley) for current status of the Technical Specification working groups.

Any of them, if completed well prior to 2017, could be folded into the standard. It is unlikely they all will be.

A goal is that we can get the std::experimental features to play with (and use if we are willing to accept the ground shifting under our feet) earlier, while having the features once added to std with fewer regrets and specification changes after that point. There are probably also massive organizational overhead advantages to decoupling the main line standard from each of these side projects and allowing them to evolve independently.



回答2:

The purpose of a Technical Report, or Technical Specification as they are now, is to gain implementation experience and feedback from implementors and users, to better assess the suitability of features for standardization. One would need a crystal ball to know if a particular TS will be included in a future standard, and which future standard that might be.

Version 1 of the Library Fundamentals TS appears to have passed its final ballot at the November 2014 committee meeting, and version 2 is currently being drafted to incorporate feedback and new proposals. This means it is getting closer to being something which implementors and industry users are happy with, and version 1 is now an immutable specification which implementors can choose to conform to. It is still more than possible for later versions, and later standards, to change in ways which would be incompatible with version 1.



回答3:

Here's a list (from your wikipedia link) of the features of TR2 - and my comments:

  • Threads - Included in C++11
  • The Asio C++ library - this is being considered for a future C++ standard
  • Signals/Slots - no action at this time (that I know of)
  • Filesystem Library - FileSystem Technical Specification
  • Boost Any Library - Part of the Library Fundamentals Technical Specification
  • Lexical Conversion Library - no action at this time (that I know of)
  • New String Algorithms - no action at this time (that I know of)
  • Toward a More Complete Taxonomy of Algebraic Properties for Numeric Libraries in TR2 - no action at this time (that I know of)
  • Adding heterogeneous comparison lookup to associative containers for TR2 - * Included in C++14*