Section 4.3 de C++ Templates états « Ne pas être en mesure d'utiliser littéraux à virgule flottante (et simples expressions à virgule flottante constant) comme arguments de modèle a raisons historiques ».spécialisation de modèle avec flotteur comme type non
De même,
14.1 $/7 états - « Un modèle paramètre non-type ne doit pas être déclarés avoir à virgule flottante, classe ou type void [Exemple:
.
template<double d> class X; // error
template<double* pd> class Y; // OK
template<double& rd> class Z; // OK"
Quelle est la raison historique qui est bein g parlé dans le livre dans la citation ci-dessus? En regardant pourquoi Y et Z sont valides mais pas X, est-ce que tout le défi lié au fait que les paramètres de type non-type de type flottant aient quelque chose à faire avec des pointeurs/références? Pourquoi les paramètres de type non-type ne peuvent-ils pas être de type classe?
@aaa carp: Oui, je pourrais comprendre cela. Je suis curieux de savoir quelle est la raison historique pour refuser les types à virgule flottante. Aussi j'essaie de comprendre pourquoi X est mal formé par pas Y ou Z. – Chubsdad
http://groups.google.com/group/comp.lang.c++/browse_thread/thread/2f4c0b5a5ae627bc/bbe916d9e75426de?hl=fr&ie=UTF -8 & oe = utf-8 & q = virgule flottante + littéraux +% 28as + modèle + arguments + historique + raisons & pli = 1 – Anycorn
@aaa carpe: non, ce n'est pas le cas. L'adresse transmise ne serait connue que de l'éditeur de liens, mais le compilateur en a déjà besoin pour instancier. – MSalters