12
votes

Est _1 une partie de C ++ 0x?

J'ai vu deux récent réponses en utilisant _1 en tant que solution pure C ++ 0X (aucune mention explicite de Boost Lambdas).

Y a-t-il un tel animal comme std :: _ 1 Je penserais que les lambdas natifs rendront une telle construction redondante.

Une recherche de code Google sur std :: _ 1 apporte Deux résultats du même projet, c'est-à-dire peu concluant.


3 commentaires

Pensez-vous qu'ils seraient en namspace std? En boost, ils sont dans l'espace de noms global ...


MSDN a _1 dans un STD :: Installations Espace de noms et vos deux réponses liées se rapportent également à cela. Ce n'est pas concluant non plus, mais si rien d'autre, vous pouvez rechercher la mauvaise chose.


Oh, je viens de trouver qu'ils sont dans TR1 < / a>


3 Réponses :



13
votes

Oui, ils font partie de C ++ 0x à l'intérieur du Std :: Installations Code> Espace de noms, à partir du dernier brouillon (N3126) §20.8.10.1.3 "Installations":

namespace std {
   namespace placeholders {
      // M is the implementation-defined number of placeholders
      extern unspecified _1;
      extern unspecified _2;
        .
        .
        .
      extern unspecified _M;
   }
}


0 commentaires

5
votes

Oui, ils font partie de C ++ 0x. Je n'ai pas vérifié les spécifications TR1, mais je soupçonne qu'ils ont été ajoutés là-bas (TR1 était essentiellement une extension de la bibliothèque à C ++ 03, de sorte qu'il ne pouvait pas compter sur Lambdas), puis, puisque c'est déjà là Dans TR1, il serait inutilement perturbateur de le retirer à nouveau dans C ++ 0x, même si ce n'est plus vraiment nécessaire une fois que vous avez de vrai Lambdas.


2 commentaires

Les espaces réservés sont toujours nécessaires car C ++ 0x Lambdas ne sont pas polymorphes.


Ils sont dans . Ils ont été ajoutés avec liaison et autres choses.