Abschnitt 4.3 der C++-Vorlagen erklärt: "Nicht in der Lage zu sein Gleitkomma-Literale (und einfache konstante Fließkomma-Ausdrücke) als Template-Argumente hat historische Gründe.'
Ähnlich,
$14.1/7 besagt - "Ein Nicht-Typ Template-Parameter darf nicht nicht als Gleitkomma-Parameter deklariert werden, Klasse oder ungültiger Typ. [Beispiel:
template<double d> class X; // error
template<double* pd> class Y; // OK
template<double& rd> class Z; // OK"
-
Was ist der historische Grund, von dem im obigen Zitat im Buch die Rede ist?
-
Betrachtet man, warum Y und Z gültig sind, aber nicht X, ist die ganze Herausforderung im Zusammenhang mit nicht-Typ-Vorlage-Parameter von fließendem Typ hat etwas mit Zeigern/Referenzen zu tun?
-
Warum können Parameter, die nicht vom Typ der Vorlage sind, nicht vom Typ der Klasse sein?