en se référant au code suivant:fonction C++ et rvalue confusion
// Example program
#include <iostream>
#include <string>
using namespace std;
struct S
{
S()
{
cout << "ctor\n";
}
S(S&& rhs)
{
cout << "called move\n";
}
};
S goo()
{
S a;
return a;
}
int main()
{
S&& goo();
cout << "before construction\n";
S a = goo();
}
//http://thbecker.net/articles/rvalue_references/section_05.html
pourquoi le code appelant la move constructor
et non la fonction S goo()
? Si vous commentez la première ligne, ce n'est pas le cas.
pourquoi le type de retour de S goo()
est-il différent selon la première ligne dans main
? Je ne pense pas que cela devrait même compiler mais compilera ici http://cpp.sh/22zeq
(ne compile pas sur wandbox: https://wandbox.org/permlink/3YxBdcWs91FRiODG)
a été la lecture d'un exemple ici: http://thbecker.net/articles/rvalue_references/section_05.html quand je suis tombé sur ce
Que pensez-vous de 'S && goo();' dans votre main? – SergeyA
@SergeyA Il n'y a pas de définition de 'S && goo()' alors comment ça marche? – PYA