tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

de-Alice-ing USE_CXX_FEATURES and c++17



I have gone over all the features and adjusted comments to list what
upstream documents, so we know where we are different.

There are three things that we have as USE_CXX_FEATURES that are
actually part of C++17:

  charconv
  filesystem
  parallelism_ts

grepping over Makefile*, regularizing markup, sort and uniq -c, and hand
sorting:

   1  USE_CXX_FEATURES= c++1 (obvious bug, not important)

   6  USE_CXX_FEATURES= unique_ptr
   2  USE_CXX_FEATURES= regex
   4  USE_CXX_FEATURES= has_include

 123  USE_CXX_FEATURES= c++11
   2  USE_CXX_FEATURES= c++11 unique_ptr
   3  USE_CXX_FEATURES= c++11 regex
   2  USE_CXX_FEATURES= c++11 put_time

  54  USE_CXX_FEATURES= c++14

   4  USE_CXX_FEATURES= charconv
   1  USE_CXX_FEATURES= charconv filesystem
  18  USE_CXX_FEATURES= filesystem
   1  USE_CXX_FEATURES= parallelism_ts

  95  USE_CXX_FEATURES= c++17
   6  USE_CXX_FEATURES= c++17 charconv
   1  USE_CXX_FEATURES= c++17 charconv filesystem
  10  USE_CXX_FEATURES= c++17 filesystem
   1  USE_CXX_FEATURES= c++17 filesystem unique_ptr

  16  USE_CXX_FEATURES= c++20
   2  USE_CXX_FEATURES= c++20 charconv

   1  USE_CXX_FEATURES= c++23


it seems that charconv and filesystem have significant presence.  What's
unknown is how many packages that lack the markup use them anyway and
fail on other platforms.

It also seems that we have multiple styles of usage:

  - asking for C++17 and then asking for things that are in C++17
    (probably similar for c++11)

  - asking for C++17 and asking for something that was in gcc 4.9, when
    4.9 doesn't come close to C++17.   Surely unique_ptr is still
    required in C++17.
    (probably historical and not needed)

  - asking for specific things in C++17 without requiring any particular
    C++ version and thus being C++03
    (probably a bug!)

  - asking for C++20 and charconv
    (odd, as charconv is required in C++17, and that raises the issue
    that if one asks for C++20 can that be expected to include all of
    C++17, even if it doesn't include all of C++20?  I would think so.)

What is notably missing is asking for C++11 and then a single feature in
C++17.

This comes down to one usage that makes sense and several that probably
are not necessary.

Therefore, all of the features should be read as "I asked for C++NN and
I need this feature which is in C++NN".



I'd like to say that despite my complaints about details, we are in
amazingly better shape than the old days of GCC_REQD!


Home | Main Index | Thread Index | Old Index