Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it safe to use a C++ Technical Specifications approved for a future standard in a earlier standard?

Tags:

c++

The Filesystem Technical Specification (TS) has recently been merged into the C++17 standard.

The same TS is also available for C++14, but in this case it's technically only "experimental". However the fact that it's been approved for C++17 makes me think it's mature enough and that it can be used safely.

When working on a C++14 project that will most likely be upgraded to C++ 17 in the future, and assuming the compiler I use supports it on both versions, would you advise against using the "experimental" TS, considering that it will officially be part of the next standard?

My question of course extends to any TS that has been accepted in a future C++ version and that is available for earlier standards.

like image 680
elnigno Avatar asked Apr 05 '16 09:04

elnigno


2 Answers

The real question is whether or not somebody's implemented it, not whether or not it's been approved/merged/whatever of some arbitrary document. Features can be excised, added or modified at any point in time of the standardization process. We've seen things get cut from C++14 right before release and also things that couldn't make it that were later amended. Vendors rely on specific versions of documents when implementing features and so the only surefire way is to consult the documentation of whatever compiler you're using.

like image 189
user6160478 Avatar answered Sep 20 '22 04:09

user6160478


Actual implementations can contains features that are not in the current standard, and can have flaws in other features that are defined in the standard or even can fail to implement specific parts - Microsoft was know to let parts of the standard unimplemented.

But if a compiler supports a feature, and if that feature is part of next standard, there is little risk if any that it will disappear in a future version of that particular compiler.

Simply, some other compiler may not implement it as soon as it is approved in standard, but you know whether it is a problem in you specific use case.

like image 38
Serge Ballesta Avatar answered Sep 22 '22 04:09

Serge Ballesta