Le compilateur mac c ++ n’a pas trouvé

Je suppose que la question du jour est “quel” compilateur c ++ est la valeur par défaut sur mac?

Si je fais xcrun -find c++ cela dit que c’est dans /Applications/Xcode.app/etc...

Lorsque je recherche le répertoire Xcode pour tr1/unordered_map , il est là.

Donc je suis confus. Pourquoi est-ce que je reçois une erreur de construction qui dit fatal error: 'tr1/unordered_map' file not found ?

Réponse courte: appelez clang ++ avec -stdlib=libstdc++ , et les en-têtes tr1 seront présents.

Réponse longue: La raison de votre erreur et des deux ensembles d’inclusions C ++ est que macOS / Xcode comporte deux bibliothèques standard C ++ différentes que vous pouvez créer: une ancienne GNU libstdc++ et la nouvelle et moderne LLVM libc++ .

Depuis macOS 10.12 Sierra, la valeur par défaut est maintenant libc++ et libstdc++ est obsolète. libstdc++ est assez ancien, v4.2.1, et est antérieur à C ++ 11 (d’où les en-têtes tr1 ). Si vous comptez utiliser ce code à long terme, cela vaut la peine de le rendre au moins compatible avec C ++ 11 (c’est-à-dire #include )