Outils pour utilisateurs

Outils du site


lang:cpp:template

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:template [2024/02/21 15:09] – [Séparer le code source des fonctions et leur définition dans une classe template] : fix exemple "Exemple avec une classe template" rootlang:cpp:template [2025/02/05 10:07] (Version actuelle) – [const Args...] : fix typo root
Ligne 29: Ligne 29:
  
 <code cpp> <code cpp>
-typename<template ...Args>+template<typename ...Args>
 void f(const Args&&... args){} void f(const Args&&... args){}
  
Ligne 356: Ligne 356:
  
 <file cpp file.cpp> <file cpp file.cpp>
-template<typename U> void A::f<U>(){}+template<typename U> void A::f(){}
  
-template void A::f<int>; +// Instanciation pour U=int 
-</file> +template void A::f<int>();
- +
-ou, dans le cas d'une spécialisation de template :+
  
-<file cpp file.cpp> +// Spécialisation pour U=double 
-template<> void A::f<int>{} +template<> void A::f<double>(){}
-template<> void A::f<double>{}+
 </file> </file>
  
Ligne 383: Ligne 380:
 template void A<int>::f(short u); template void A<int>::f(short u);
 </file> </file>
 +
 +  * Messages d'erreur
 +
 +''error: specialization of XXX after instantiation''
 +
 +''error: explicit specialization of XXX after instantiation''
 +
 +''error C2908: explicit specialization; XXX has already been instantiated''
 +
 +Il ne faut pas utiliser une classe spécialisée avant qu'elle ne soit définie.
 +
 +<code cpp>
 +template <typename T>
 +class A {};
 +
 +// Doit être défini après la spécialisation.
 +A<int> a;
 +
 +template <>
 +class A<int> {};
 +</code>
 ====Afficher en string le type template==== ====Afficher en string le type template====
 <code cpp> <code cpp>
lang/cpp/template.1708524590.txt.gz · Dernière modification : 2024/02/21 15:09 de root