variadic template?
-
Hallo,
ich frage mich warum das hier klappt? warum wird sizeof nicht auf 1/0 angewendet, Stichwort Lazy Evaluation.
template <typename... Args> void mySize(Args... args) { std::cout << sizeof...(args) << std::endl; } mySize("Rainer", 1/0);
-
http://ideone.com/aKYVTl
Kommt doch 2 raus. Was haettest du erwartet?
-
Warum sollte das nicht klappen?
1/0
gibt einen temporären Wert vom Typint
.mySize("Rainer", 1/0);
wird also zu einem Aufruf vonmySize<const char[7], int>()
undsizeof...(args)
ist dort 2...
-
Was für eine 2?
Bei mir kommt 7 raus -> Länge string
-
Wo kommt bei dir da 7 raus?
-
Warum sollte 1/0 klappen?
-
Stevo1231 schrieb:
Was für eine 2?
Bei mir kommt 7 raus -> Länge string
Beim Abtippen ein paar ... vergessen?
-
Der
sizeof...
-Operator gibt die Laenge des Parameterpacks zurueck. Die ist offensichtlich 2.
Hast du die Ellipse vergessen?Ist aber sowieso UB, wegen Division durch 0.
Edit: Kaum tippt man da eine Minute, schon kommt volkard dahergelaufen...
-
Uebrigens, Dot, das deduzierte Template-Argument ist in diesem Fall kein Array; Siehe hier.
-
Arcoth schrieb:
Uebrigens, Dot, das deduzierte Template-Argument ist in diesem Fall kein Array; Siehe hier.
Stimmt, hab natürlich auf das array to pointer decay vergessen...