2010-02-22 4 views
3

De Boost::Thread:Odd C++ syntaxe de déclaration de fonction membre: && qualificatif

template <typename R> 
class shared_future 
{ 
... 
// move support 
shared_future(shared_future && other); 
shared_future(unique_future<R> && other); 
shared_future& operator=(shared_future && other); 
shared_future& operator=(unique_future<R> && other); 
... 
} 

Que diable sont ces doubles-esperluette? Je suis passé "BS The C++ Langauge 3d edition" et je n'ai trouvé aucune explication.

+1

Je sais que vous ne pourriez pas l'avoir trouvé en cherchant SO, mais toujours une copie: http://stackoverflow.com/questions/844241/why-are-c0x-rvalue-reference-not-the-default (I Je vais vous donner un +1 pour l'effort et la clarté cependant.: P) –

+0

Merci, nous espérons que l'ajustement du titre permettra à quelqu'un d'autre de localiser la solution. –

+0

Le problème est que les symboles ne sont pas pris en compte lors de la recherche, donc "&&" n'aide pas. Vous devriez connaître le nom "rvalue reference" pour trouver SO questions à ce sujet. –

Répondre

6

Ceci est un ajout C++ 0x pour les références rvalue.

Voir http://www.artima.com/cppsource/rvalue.html.

+0

il est un peu étrange pour une bibliothèque en boost de commencer à utiliser C++ 0x avant sa sortie. –

+5

@Hassan: Non, ce n'est pas le cas. Il vaut mieux expérimenter avec des fonctionnalités avant qu'elles ne soient standardisées (l'un des principaux objectifs de la norme est de «standardiser la pratique existante»), et une telle expérimentation est un objectif principal de boost. L'implémentation de boost réelle utilise le préprocesseur pour activer sélectivement l'utilisation des références rvalue. –

Questions connexes