-1
votes

Devrait-il remplacer les modèles de fonction en C ++?

en C ++, je peux écrire:

template<class X1, class X2> auto sum1(const X1& x1, const X2& x2)
{
    return x1 + x2;
}


2 commentaires

Lambdas? Où?


Je ne vois pas de lambda nulle part dans votre question


3 Réponses :


4
votes

Somme automatique (const Auto & X1, const auto & x2) n'est pas une lambda. C'est en fait un Modèle de fonction abrégé , qui devrait répondre à votre question . Il ne remplace pas les modèles de fonction: c'est la même chose, en utilisant un raccourci.


0 commentaires

4
votes

uhmmm ...

1) Le code suivant n'est pas un code juridique C ++, pour le moment; Peut-être à l'avenir (C ++ 20?) Mais pas avant que c ++ 17 p> xxx pré>

2) C'est un code valide (mais uniquement à partir de C ++ 14) votre code de modèle P>

[]<typename X1, typename X2>(X1 const & x1, X2 const &x2){ return x1+x2) }  


1 commentaires

Oui, en C ++ 20 auto Les paramètres des fonctions sont autorisés - définitivement :)



0
votes

Votre premier code n'est pas une fonction Lambda.

Et vous ne pouvez pas dire que Lambda peut remplacer les fonctions de modèle

Vous pouvez utiliser la définition de la Lambda pour écrire des fonctions. Vous pouvez le définir n'importe où dans votre code, nous l'utilisons habituellement si vous êtes sûr que vous n'en utiliserez qu'une seule fois.

BTW, Auto Comme pas un bon moyen de pouvoir utiliser plus d'un type de données, cela peut entraîner des problèmes et ne fonctionne pas avec toutes les versions C ++.


1 commentaires

"Lambda est juste une autre façon d'écrire la définition de la fonction" Non! Lambda écrit une classe qui a un opérateur appelable et crée une instance en place. C'est un peu différent de l'écriture d'une fonction ...