Betrachten Sie die folgende Minimal Complete:Ausführlicher C++ 17-Status in GCC?
#include <numeric>
int main() {
std::transform_reduce();
}
Ein Versuch, es mit GCC 7.2 Ergebnisse in Fehler zu kompilieren:
[[email protected] ~]$ g++ -std=c++17 omg.cpp
omg.cpp: In function ‘int main()’:
omg.cpp:4:7: error: ‘transform_reduce’ is not a member of ‘std’
std::transform_reduce();
^~~~~~~~~~~~~~~~
[[email protected] ~]$ g++ -v |& tail -1
gcc version 7.2.0 (GCC)
habe ich versucht, etwas auf https://gcc.gnu.org/projects/cxx-status.html Bezug zu finden, aber es deckt meist Sprachfunktionen und Ich habe nichts über die Unterstützung neuer STL-Definitionen gesehen (manchmal kann dies einfach automatisiert sein, wie die Überprüfung von #if __has_include(<execution>)
, aber <numeric>
ist ein altes Include und ich sehe keinen sauberen Weg, um zu überprüfen, ob es eine bestimmte Definition enthält). Gibt es neben der schnellen Analyse von STL-Headern schnelle Informationsquellen darüber, ob ein im aktuellen Entwurf beschriebenes Objekt bereits implementiert wurde? und wenn etwas anderes wahrscheinlich sein wird?
https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2017 – Justin
Nun, wenn die Kompilation vermutlich versagt es isn 't implementiert. –
In diesem Link, unter "Die Parallelität TS sollte standardisiert sein", können Sie sehen, dass dies nicht implementiert ist. 'transform_reduce' ist [in der Parallelism TS] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0024r2.html#transform.reduce) – Justin