rn (p -= 0) ? 1 : n*power(n.p

Автор admin Пятница, 22 мая 2009 11:32

rn (p -= 0) ? 1 : n*power(n.p – 1): Она легко формулируется в виде шаблонной метапрограммы: //: С05:Power.срр #i nclude using namespace std; tempiate struct Power { enum {val – N * Power::val}: В 1966 году Бём (Bohm) и Якопини (Jacopini) доказали, что любой язык с поддержкой конструкций условного выбора и циклов, позволяющий использовать произвольное количество переменных, эквивалентен машине Тьюринга, которая способна представить любой алгоритм. Шаблонное метапрограммирование 237 1 ^Generative Programming: Methods, Tools, and Applications*, Addison-Wesley, 2000, c. 417. tempiate<1nt N> struct Power { enum {val – 1}: }: int mainO { cout « Power<2. 5>::val « endl: //32 } ///:- Условие остановки должно задаваться неполной специализацией, поскольку значение N остается свободным параметром шаблона. Помните, что программа работает только для неотрицательных показателей степени. Следующая метапрограмма, позаимствованная из книги Чарнецки (Charnecki) и Эйзенекера (Eisenecker)’, интересна тем, что в ней используется шаблон в качестве параметра шаблона и имитируется перед


Комментарии закрыты.