Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Смотрим… Работает!
Получаем некорректный результат, и ни одного предупреждения
Мы получаем наследуемые inline методы с полиморфным поведением!
Мы получаем наследуемые inline методы с полиморфным поведением!
Вы так подчеркиваете, то что они inline, это существенно?
Переформулирую вопрос, а почему это существенно? Если вы думаете, что он подставит их тело вместо вызова, то он этого может и не сделать.Существенно то, что компилятор сделает их встроеннымиМы получаем наследуемые inline методы с полиморфным поведением!Вы так подчеркиваете, то что они inline, это существенно?
Да, вы правы, поправил.Факториал все еще не факториал, а арифметическая прогрессия по сути просто умножение двух чисел, это конечно тоже арифметическая прогрессия, но пример не показательный, того же эффекта можно достигнуть просто перемножив числа.
Специализация — это повторное определение шаблона с конкретным типом либо классом типов:
даже для эквивалентных типов — unsigned char & charС каких пор они эквивалентные?
template<int n>
struct IntegersSum
{
enum { sum = IntegersSum<n - 1>::sum + n };
};
template<>
struct IntegersSum<0>
{
enum { sum = 0 };
};
Введение в магию шаблонов