4.3 Simplification de la surcharge des opérateurs

Comme nous commençons à avoir des structures dans tout les sens (car je vous rappel que l'on ne peut pas surcharger des fonctions templates hors de structure ou classes), nous allons créer des fonctions pour simplifier la surcharge des opérateurs.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
template <class T, class U>
inline BinaryOp<T, U, Add> MakeAdd(const T& t, const U& u){
	return BinaryOp<T, U, Add>(t, u);
}

template <class T, class U>
inline BinaryOp<T, U, Sub> MakeSub(const T& t, const U& u){
	return BinaryOp<T, U, Sub>(t, u);
}

template <class T, class U>
inline BinaryOp<T, U, Mult> MakeMult(const T& t, const U& u){
	return BinaryOp<T, U, Mult>(t, u);
}

template <class T, class U>
inline BinaryOp<T, U, Div> MakeDiv(const T& t, const U& u){
	return BinaryOp<T, U, Div>(t, u);
}

template <class T>
inline UnaryOp<T, Minus> MakeMinus(const T& t){
	return UnaryOp<T, Minus>(t);
}

template <class T>
inline UnaryOp<T, Const> MakeConst(const T& t){
	return UnaryOp<T, Const>(t);
}