Dans le code suivant, Foo::add
appelle une fonction via un objet de fonction:Cet appel à un objet fonction est-il en ligne?
struct Plus {
inline int operator()(int x, int y) const {
return x + y;
}
};
template<class Fct>
struct Foo {
Fct fct;
Foo(Fct f) : fct(f) {}
inline int add(int x, int y) {
return fct(x,y); // same efficiency adding directly?
}
};
Est-ce la même efficacité que d'appeler x+y
directement Foo::add
? En d'autres termes, le compilateur remplace-t-il généralement fct(x,y)
par l'appel réel, en insérant le code, lors de la compilation avec les optimisations activées?