пятница, 21 сентября 2007 г.

double как параметр шаблона

Прочитав пару статей о мета программировании в С++, решил наваять что-то более существенное чем вычисление факториала в процессе компиляции. Задача для опыта нашлась быстро: численное решение дифференциального уравнения - то, с чем пришлось часто иметь дело в учась в универе. Вроде бы все не предвиделось никаких препятствий пока не попробовал скомпилить код, содержащий что-то вроде этого:

Этот код очень не понравился компилятору: "error ?double? is not a valid type for a template constant parameter". Вот так вот. Оказывает в стандарте четко указанно, что может быть параметром шаблона (section 14.3.2 paragraph 1 of the C++ specification):

A template-argument for a non-type, non-template template-parameter shall be one of:
— an integral constant-expression of integral or enumeration type; or
— the name of a non-type template-parameter; or
— the address of an object or function with external linkage, including function templates and function template-ids but excluding non-static class members, expressed as & id-expression where the & is optional if the name refers to a function or array, or if the corresponding template-parameter is a reference; or
— a pointer to member expressed as described in 5.3.1 .


Придется искать другой способ...

Комментариев нет: