IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

C++26 : Concept et templates variables comme paramètre template
Par Sandor Dargo

Le , par Sandor Dargo

285PARTAGES

14  0 

C++26 : Concept et templates variables comme paramètre template, par Sandor Dargo

La semaine dernière, nous avons discuté des raisons pour lesquelles il est parfois nécessaire d'utiliser remove_cvref_t sur nos paramètres template avant de leur appliquer des concepts. Nous avons également vu que cette solution n'est pas très lisible, car elle nous prive de la syntaxe concise et abrégée.

Si seulement nous pouvions utiliser les concepts comme paramètres template !

Heureusement, P2841R7 vient à notre secours, et il a récemment été accepté dans le cadre de C++26.

À première vue, la proposition peut sembler intimidante, car elle compte près de 40 pages. Mais ne vous inquiétez pas. Tout d'abord, il s'agit d'un document très lisible, rempli d'explications claires et détaillées. Ensuite, environ la moitié consiste en des modifications de formulation.

Plongeons-nous dans le vif du sujet.

Les concepts en tant que template de paramètres template

Le C++ permet déjà de passer des templates en tant que paramètres template, mais uniquement s'il s'agit de template de classe. Une raison courante pour cela est de permettre des abstractions de plus haut niveau. Par exemple, vous pouvez vouloir passer un template de conteneur comme std::vector, sans spécifier le type qu'il contient.

Jason Turner explique bien cela dans C++ Weekly - Ep 368 - The Power of template-template Parameters: A Basic Guide.

https://www.youtube.com/watch?v=s6Cub7EFLXo

Mais voici son exemple pour référence rapide :

template