Comment insérer une paire de std::pair à l'intérieur d'une std::pair?

Je suis la déclaration d'une carte de la chaîne pour une paire de paires comme suit:

std::map<std::wstring, 
         std::pair<std::pair<long, long>, 
                   std::pair<long, long>>> reference;

Et je l'initialiser comme:

reference.insert(L"First", 
                 std::pair<std::pair<long, long>, 
                           std::pair<long, long>>(std::pair<long, long>(-1, -1),
                           std::pair<long, long>(0, 0)));

Toutefois, Visual C++ me donne l'erreur "C2664, Aucun constructeur peut prendre le type de source, ou de surcharge du constructeur de résolution a été ambigu".

Je suis nouveau à l'aide de modèles et STL et je ne peux pas dire ce que je fais mal.

Veuillez utiliser typedef et std::make_pair pour le rendre lisible.
J'ai reformaté pour en faire un peu plus facile sur les yeux.
Au lieu de nidification toutes ces std::pair s ne pouvais pas vous passer de l'un à l'aide de std::tr1::tuple? Boost est un n-uplet de mise en œuvre.
Yo yo Dawg. Je vous ai entendu comme std::pair, je l'ai donc mis un std::pair dans votre....
Comme je comprends le tuple n'est pas mis en œuvre par tous les fournisseurs. Je suis en train d'apprendre STL première avant de passer à Boost.

OriginalL'auteur Fábio | 2010-09-28