2017-11-27 2 views
2

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?

+0

https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2017 – Justin

+0

Nun, wenn die Kompilation vermutlich versagt es isn 't implementiert. –

+1

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

Antwort