Раздел 4.3 С++ Templatesгосударства "Не в состоянии использовать литералы с плавающей запятой (и простые постоянные выражения с плавающей запятой) поскольку аргументы шаблона имеют исторический причины".
Аналогично,
$14.1/7 состояний - "Не-тип параметр шаблона не должен быть объявлено, что имеет плавающую точку, класса или типа void. [Пример:
template<double d> class X; // error
template<double* pd> class Y; // OK
template<double& rd> class Z; // OK"
-
Какова историческая причина, о которой говорится в книге в приведенной выше цитате?
-
Глядя на то, почему Y и Z являются действительными, но не X, представляет собой всю проблему, связанную с тем, что параметры шаблона типа non type не имеют ничего с указателями/ссылками?
-
Почему параметры шаблона шаблона не могут быть типа класса?