Diskussion:Template (C++)

message: AFAIK kann man funktionen mittels Templates spezialisieren. Allerdings fehlt mir im Moment gerade ein Beweismittel, und für nen Compiler-Lauf ist's im Moment zu spät. Weiß einer was genaueres? -- Helm 22:18, 1. Jun 2004 (CEST)
replies: text: Ja, kann man auch. Nur eben nicht partiell, sondern nur vollständig. Leider. --RokerHRO 14:39, 7. Okt 2005 (CEST)

message: if (x < y)
    return y;
  else
    return x;
ist das else in dem Beispiel nicht unnötig?
: Jain. Die Funktion macht ohne else zwar das Gleiche, aber mit else wird IMHO klarer, was gemeint ist. --RokerHRO 22:59, 21. Mai 2008 (CEST)
thread_title:  else unnötig? 

message: Hallo,
ich halte den Eintrag in der QS für sinnvoll, doch wenn wir es verallgemeinern, also alles von C++ entfernen, ist der Beitrag 2 Minuten später als SLA eingetragen. Aber wir können doch nicht jede Programmiersprache erwähnen?--Lancy 23:29, 20. Mai 2009 (CEST)
replies: text: (teilweise) Zustimmung. Es muss unterschieden werden zwischen genereller generischer Programmierung und Templates. Generische Programmierung stellt das Konzept der typungebundenen Progammierung, wohingegen Templates eine konkrete Ausprägung der generischen Programmierung sind, wobei die Templates eben nunmal hauptsächlich in C++ zum Einsatz kommen. Die in anderen Sprachen vorkommenden Mechanismen zur generischen Programmierung sind i.d.R. nicht mit Templates vergleichbar. Von daher denke ich, dass der Artikel inhaltlich passt. Es sollte vielleicht maximal nur noch ein expliziter Hinweis darauf erfolgen, dass Templates nicht nur als Element der generischen Progammierung benutzt werden, sondern auch für die Template-Metaprogrammierung (der Link zu den weiterführenden Themen ist da nicht genug). Was auch fehlt ist ein Hinweis auf die Möglichkeit, statt einem Typenamen einen konkreten Typ in der Template-Definition anzugeben - hier besteht ein wichtiger Unterschied zu etwa den Generics in C# und dadurch wird auch die Mächtigkeit der Templates erzeugt. Das eben angesprochene wird zwar im Artikel benutzt (partielle Spezialisierung), aber nicht erklärt. (nicht signierter Beitrag von 91.39.110.120 (Diskussion | Beiträge) 22:28, 24. Jun. 2009 (CEST)
thread_title:  QS 

message: template<>
int Example::frobnicate<int>()
{
   // Bla
}
Sollte doch klappen, das ist ja keine partielle Spezialisierung.
Problematisch ists nur, wenn die Klasse selbst ein Template hat oder nur manche Parameter der Funktion spezialisiert werden sollen.
Das könnte man ja noch einbringen:
Eine andere Möglichkeit bieten Typzuordnungen, dabei wird die Überladung ausgenutzt:
class Example
{
private:
  template<typename T>
  T frobnicateImpl(T param, Type2Type<T>)
  {
    // do something
  }
  int frobnicateImpl(int param, Type2Type<int>)
  {
    // do something
  }
public:
  template<typename T>
  T frobnicate(T param)
  {
    return frobnicateImpl(param, Type2Type<T>());
  }
};
 (nicht signierter Beitrag von Chricho (Diskussion | Beiträge) 20:29, 26. Mai 2009 (CEST)
thread_title:  Wo ist da partielle Spezialisierung versteckt? 

message: Der Artikel und all seine fremdsprachlichen Gegenstücke behandeln nur C++-Templates. Ich wäre dafür, den Artikel entweder entsprechend umzubenennen oder aber über andere Programmiersprachen mehr aufzunehmen, sofern das nicht in Generics besser aufgehoben ist. Was meint ihr? --RokerHRO (Diskussion) 13:32, 24. Dez. 2012 (CET)
replies: text: Ich wollte das auch gerade fragen. Da seit über zwei Jahren niemand was gegen hatte, mach ich das mal. dingensfünf 19:24, 14. Jul. 2015 (CEST)
thread_title:  Nur C++? 

message: Nach dem ersten Satz stellt sich die Frage, was ein Container ist, diese wird im Folgenden nicht beantwortet. Einen unbekannten Begriff mit "ermöglicht einen anderen unbekannten Begriff" zu erklären ist nicht zielführend. Unter welchen Umständen ermöglicht ein Template einen Container? Warum nicht einfach: "Ein Template IST eine Typ unspezifische Beschreibung ... und dient somit als Vorlage für ..." --Moritzgedig (Diskussion) 13:51, 10. Dez. 2016 (CET)
thread_title:  Container