À l'aide de c++11 unordered_map types sur mac os x

Je suis sur MAC OS X 10.8.4 et ont installé gcc par le téléchargement de XCode et les outils de ligne de commande package. Voici mon gcc:

Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

Je suis en train d'utiliser la nouvelle unordered_map de la tr1 espace de noms:

using namespace std;
#include <tr1/unordered_map>

template<class T>
class A 
{
    tr1::unordered_map<T, int> * mymap;
    .....
    //key is of type T and value is of type int
    mymap->at(key) = value;
}

Cependant, la ligne où je suis accéder à l'élément de la carte à l'aide de at n'est pas la compilation. J'obtiens l'erreur suivante:

error: 'class std::tr1::unordered_map<int, int, std::tr1::hash<int>, std::equal_to<int>, std::allocator<std::pair<const int, int> >, false>' has no member named 'at'

Je ne comprends pas très bien ce depuis le C++ de référence inclut une fonction appelée at d'accéder aux différents éléments de la carte. J'ai essayé de regarder dans les fichiers d'en-tête contenant la carte de la déclaration (sur mon système, c'est à /usr/include/c++/4.2.1/tr1/unordered_map) et assez étonnamment, il ne contient pas un membre nommé at.

Je comprends que les compilateurs plus âgés pourraient ne pas être le soutien à de nouvelles c++11 bibliothèques dans le std espace de noms, mais j'ai été en mesure d'utiliser certaines des nouvelles bibliothèques de tr1 espace de noms. En fait, je peux utiliser d'autres fonctions de unordered_map comme find, insert etc. Seul le membre at est manquant.

Comment puis-je obtenir ce compilé? Dois-je mettre à niveau vers un nouveau compilateur? Je ne vois pas les nouveaux compilateurs disponibles pour mac os x facilement. Dois-je construire à partir de zéro?

OriginalL'auteur Venkat | 2013-08-31