этих функций может подставлят

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

этих функций может подставляться, фактически в main() будет вставлено единственное выражение m*m*m. Таким образом, простая специализация шаблона в сочетании с подстановкой позволяет полностью избавиться от издержек управления циклом1. Эта разновидность развертывания цикла ограничивается максимальной глубиной подстановки в вашем компиляторе. Условный выбор на стадии компиляции Чтобы имитировать условные конструкции на стадии компиляции, можно воспользоваться условным тернарным оператором в объявлении enum. В следующей программе эта методика применяется для вычисления на стадии компиляции большего из двух целых чисел: //: С05:Мах.срр #include using namespace std: tempiate struct Max { enum {val = nl > n2 ? nl : n2}; }: int mainO { cout « Max<10. 20>::val « endl: // 20 } ///:- Чтобы в зависимости от условия компилятор генерировал разный код, используйте специализации с параметрами true и false: //: С05:Conditionals.срр // Применение условий стадии компиляции для выбора кода #include using namespace std; tempiate struct Select {}; tempiate<> struct Select<


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