Zum Thema, wieso Templates besser, als bspw. Funktionen sind, kommt immer wieder das Argument auf, dass sie generisch seien, also dass das Template mit unterschiedlichen Datentypen arbeiten kann.
Kann diese auch folgende Objekte übernehmen, die so instanziiert sind? Wenn ja, wieso? Ich habe meine beiden Variablen anders definiert. Wozu müssen diese dann überhaupt definiert werden? Fragen über Fragen.
Es werden damit 3 Parameter definiert.
Der Erste typename T.
Der Zweite uint8_t.
Der Dritte uint16_t.
Zweiter und Dritter Parameter sind festgelegt. Erster Parameter kann beliebig sein, damit wird genau genommen nur der Datentyp festgelegt den die "Parametervariable" mitbringt. In deinem Bsp. erst Fließkomma und dann String. Ohne dem Typname könntest du nicht 2 Instanzen anlegen mit unterschiedlichen Datentyp des ersten Parameters.
template <typename T, uint8_t blib, uint16_t bla>
class MyClass {
T var {0};
// ...
};
Um das irgendwie zu nutzen könntest mittels Typname eine private Variable mit genau dem gleichen Datentyp anlegen wie der Übergabeparameter/Variable hat. Da muss man wissen was man macht.
Ich sehe keine Variablen.
Template Parameter sind in der Form konstant, als dass sie zur Kompilezeit aufgelöst werden.
Sie sind alles andere, nur keine Variablen.
im Prinzip ja, aber es müssen bekannte Typen sein.
string (lit.) ist nicht bekannt und kompiliert daher auch nicht (was du selber auch feststellen hättest können, würdest du einen ganzen Sketch rundherum machen).