Un problème de compilation ou de code?

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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^^

+0 -0

Cette réponse a aidé l'auteur du sujet

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.

Mon Github | Mantra : Un Entity-System en C++

+0 -0

C'est un paramètre template. Dans ce cas particulier ça désigne le type des paramètres (ou un type déduit si le paramètre template est void). Les templates forment tout un pan de C++ et ont des usages très variés. Le cours en parle ici.

Édité par Praetonus

Mon Github | Mantra : Un Entity-System en C++

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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