W roku 2003 - tak, - Vandervoorde i Josuttis napisał w swojej książce "C++ Szablony" (str. 40):Dlaczego podwójny niedozwolony jest parametrem szablonu innego niż typ?
Nie będąc w stanie używać literały zmiennoprzecinkowe (i prosty stały o zmiennym wyrażenia punktowe), ponieważ argumenty szablonu mają przyczyny historyczne. Ponieważ nie ma poważnych wyzwań technicznych, może to być obsługiwane w przyszłych wersjach C++.
Ale to nadal nie działa, nawet w C++ 11:
template<double D> //error
void foo() {}
Dlaczego nie dodaje?
Biorąc pod uwagę, że równość zmiennoprzecinkowa jest śliskie nie wiem, jak mogli powiedzieć "nie ma poważnych technicznych wyzwań". Sądzę, że byłoby to najeżone niebezpieczeństwem. –
@ ErnestFriedman-Hill: To wydaje się być podstawą odpowiedzi na moje pytanie. –
Jednak regularnie zajmujemy się kwestiami równości w kodzie wykonawczym. Te same zastrzeżenia dotyczyłyby ich użycia w szablonach ... Naprawdę nie widzę dobrego powodu, aby utrzymywać je tylko w środowisku wykonawczym. –