Je suivais ce tutoriel - http://www.learncpp.com/cpp-tutorial/132-function-template-instances/modèle de fonction par valeur et par différence de référence
// passing all parameters by references
template <typename T1, typename T2>
const T2& add_two_objects(const T1& x,const T2& y) {
return x+y;
};
int main() {
using std::cout;
int x(0),y(0);
std::cout << "Please enter number 1" << std::endl;
std::cin >> x;
std::cout << "Please enter number 2" << std::endl;
std::cin >> y;
cout<< "sum of two integers is " << add_two_objects(x,y+1.2) << '\n';
cout<< "sum of two double is " << add_two_objects(x,y+2.52424324) << '\n';
return 0;
}
Le programme compile très bien, mais au moment de l'exécution, je reçois toujours une erreur de segmentation. Cependant, si je change le modèle pour passer en valeur, alors tout fonctionne.
// passing all parameters by value
template <typename T1, typename T2>
const T2 add_two_objects(const T1 x,const T2 y) {
return x+y;
};
Quelqu'un peut-il expliquer?
Vous ne pouvez pas retourner une référence à un temporaire. Mais c'est un code assez inutile, et assez mal écrit. Peut-être que vous devriez trouver un tutoriel différent? –
@CodyGray au moins le turial a un 'using std :: cout' au lieu de' using namespace std; ' – user463035818
J'ai modfied les exemples de tutoriel pour essayer des choses plus complexes (pour comprendre bien sûr) Le tutoriel je pense est assez bon. – infoclogged