Afficher un message
Vieux 20/03/2008, 10h34   #3
Michel Decima
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: C++0X : Rvalue references

Michael DOUBEZ a écrit :
> Mickaël Wolff a écrit :
>> Bonjour la liste,
>>
>> Je n'arrive pas à saisir le concept des « rvalue references », promis
>> pour la prochaine normalisation du C++.


> 2. Utilisation de temporaires en tant que paramètre non const.
>
> Par exemple, ça veut dire que tu peux utiliser une valeur renvoyée par
> une fonction en tant que paramètre non-const (Pour peu que la class soit
> moveable).Une application pratique est une fonction get_log_stream() qui
> te renvoie une stream que tu vas utiliser pour contruire un log; le log
> est envoyé à la destruction de la stream.
>
> logstream get_log_stream();
>
> Aujourdhui, tu ne peux pas faire:
>
> get_log_stream()<<"LOG: Error "<<errno<<std::endl;


En fait si, tu peux le faire, a condition que get_log_stream renvoie
un proxy copiable, avec un comptage de reference et un operator<<
template qui prend en premier argument un const :

template< typename T >
inline OutputStreamWrapper const&
operator<<( OutputStreamWrapper const& dest, T const& src )
{
if ( std:stream* target = dest.getStream() ) {
*target << src;
}
return dest;
}

Au passage: merci James.

Mais c'est vrai qu'avec le move, c'est beaucoup plus simple, puisque
tout le bazar necessaire jusqu'a present sera offert par le langage.
  Réponse avec citation
 
Page generated in 0,05569 seconds with 9 queries