Outils pour utilisateurs

Outils du site


lang:cpp:concept

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lang:cpp:concept [2021/05/14 09:58] – [Migration C++17 vers C++20] : add missing include rootlang:cpp:concept [2021/11/13 09:04] (Version actuelle) – Ajout de "Restriction" "Fonction template" root
Ligne 17: Ligne 17:
 template <typename T> template <typename T>
 // Le type est cv. Donc, il faut utiliser deux paramètres, l'un pour const, l'autre sans. // Le type est cv. Donc, il faut utiliser deux paramètres, l'un pour const, l'autre sans.
-concept Shape = requires(const T t, T u)+concept Shape = requires(const T t, T u, float f)
 { {
   // Le type de retour est facultatif mais conseillé.   // Le type de retour est facultatif mais conseillé.
   { t.area() } -> std::same_as<float>;   { t.area() } -> std::same_as<float>;
-  { u.mod() } -> std::same_as<float>;+  { u.mod(f) } -> std::same_as<float>;
   // On impose une variable.   // On impose une variable.
   // Elle peut être static / constexpr ou non.   // Elle peut être static / constexpr ou non.
Ligne 35: Ligne 35:
 { {
     consteval float area() const {return 1.;}     consteval float area() const {return 1.;}
-    consteval float mod() {return 1.;}+    consteval float mod(float f) {return f;}
     static constexpr float varr = 2.f;     static constexpr float varr = 2.f;
 }; };
Ligne 71: Ligne 71:
  
 Et cela va générer un symbole pour chaque type. Et cela va générer un symbole pour chaque type.
 +
 +====Restriction====
 +
 +===Fonction template===
 +
 +Il n'est pas possible de définir un concept avec un template non défini dans le concept.
 +
 +Exemple:
 +
 +<code cpp>
 +struct Goat {
 +    template<class T>
 +    void eat(T);
 +};
 +</code>
 +
 +Il n'est pas possible de laisser ''eat'' template. Il faudra définir explicitement chaque surcharge.
 +
 +[[https://quuxplusone.github.io/blog/2020/08/10/concepts-cant-do-quantifiers/|Concepts can’t do quantifiers]] {{ :lang:cpp:concept:concepts_can_t_do_quantifiers_arthur_o_dwyer_stuff_mostly_about_c_2021-11-13_09_03_00_.html |Archive du 10/08/2020 le 13/11/2021}}
 +
 ====Migration C++17 vers C++20==== ====Migration C++17 vers C++20====
  
lang/cpp/concept.1620979122.txt.gz · Dernière modification : 2021/05/14 09:58 de root