Outils pour utilisateurs

Outils du site


lang:cpp:concept

Ceci est une ancienne révision du document !


Les concepts servent à forcer des classes à respecter certaines contraintes ou à définir des interfaces.

https://omnigoat.github.io/2020/01/19/cpp20-concepts/ Archive du 19/01/2020 le 05/02/2020

Définitions des concepts

Contrainte sur un type :

template <typename T>
concept integral = std::is_integral_v<T>;

Contrainte sur les fonctions :

// look, this concept requires two types
template <typename X, typename Y>
concept they_are_mathsy = requires(X x, Y y)
{
    { x * y };
    { x / y };
    { x + y };
    { x - y };
};

Application des concepts

template <typename T, typename U>
requires integral<T> && they_are_mathsy<T, U>
void log(T&& x, U y)
{ ... }
lang/cpp/concept.1580936283.txt.gz · Dernière modification : 2020/02/05 21:58 de root