Un problème de compilation ou de code?

Le problème exposé dans ce sujet a été résolu.

Bonsoir à tous, je commence le C++ et pour commencer sur de bonnes base, je me suis attelé à la lecture du tuto de @gbdivers et je suis arrivé sur les objets-fonctions. j'ai donc tenté d'ecrire ces deux lignes:

1
2
const auto predicat = std::equal_to<>();
std::cout << predicat(1,2) << std::endl;

mais le compilateur(je suis sous clion 1.2.4) refuse de compiler et me donne cette erreur:

1
2
error: wrong number of template arguments (0, should be 1)
   const auto predicat = std::equal_to<>();

Alors je ne vois pas bien mon erreur et je ne saisis pas trop non plus le concept d'objets-fonctions: ce sont des fonctions qui peuvent utiliser des mécanismes comme l'héritage? Merci beaucoup de vos aides^^

Salut.

Ton erreur vient du fait que la spécialisation de equal_to que tu utilise n'est apparue qu'avec C++14. Tu dois donc soit compiler avec C++14 (méthode préférable) ou bien spécifier le paramètre template.

Pour les objets-fonctions, il s'agit d'objets (donc définis à partir de classes, donc pouvant effectivement tirer partie de l'héritage) disposant d'un operator() qui permet leur utilisation dans le même contexte qu'une fonction.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte