Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is C++ Technical Specification?

Concepts-lite C++ (proposal N3701) feature is not included in C++1y standard, but it is said it will be published as Technical Specification. What does it exactly mean? Will it automatically become a standard feature in next C++ releases?

like image 810
nkdm Avatar asked Jan 24 '14 20:01

nkdm


1 Answers

I usually don't like copy-paste answer's, but I think it is pretty well explained here:

Starting in 2012, the committee has transitioned to a “decoupled” model where major pieces of work progress independently from the Standard itself and can be delivered asynchronously in the form of Technical Specifications (TS’s) that are separate from the main Standard and can later be incorporated into the Standard. With releases targeting 2014 onward, we are focusing in particular on producing new C++ standard libraries; to participate, see the Call for Proposals and instructions for how to Submit a Proposal.

This decoupled model allows the committee to deliver smaller pieces of work in a faster and more predictable way. Decoupling enables this in a number of ways, including that each TS’s work can progress at is own speed, can be delivered sooner without waiting for the next Standard, and can be delivered in a form that lets the community gain experience with the feature and possibly adjust its design before it is formally included in the actual Standard. Decoupling the work also allows the Standard itself to be delivered on a more regular cadence with smaller and more predictable “batches” of features, which helps compilers track the Standard more closely and encourages different compilers to add new features in a more consistent order.

What this means for users:

You will able to use any of these new features from a separate namespace which I believe will be std::experimental::fundamentals_v1*. Once these features are "fully-baked", they will be incorporated into the C++ standard and moved to the std namespace.

*: Although it looks like fundamentals_v1 will be an inline namespace, so you can just prepend std::experimental.

like image 52
Jesse Good Avatar answered Sep 19 '22 13:09

Jesse Good