Bonjour,

je cherche à forcer la copie d'une instance sur un retour de fonction, mais je n'y arrive pas !
Je sais que ça n'a pas vraiment de sens, mais c'est juste parce que je voudrais tester un truc.
Prenons le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Foo
{
public:
	Foo(int num = 10) : m_num(num) {}
 
	Foo(const Foo& other) : m_num(other.m_num) {}
	Foo(const Foo&& other) = delete;
 
	Foo& operator = (const Foo& other) = delete;
	Foo& operator = (const Foo&& other) = delete;
 
	int m_num = 5;
};
 
Foo f(const Foo& foo1) 
{
	return Foo(foo1.m_num + 1);
}
 
int main()
{
	Foo foo1;
	Foo foo2 = f(foo1);
}
Ça ne compile pas : il veut absolument son move ctor !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Error	C2280	'Foo::Foo(const Foo &&)': attempting to reference a deleted function
Je travaille avec Visual Studio 2017.
Merci par avance