Metaprogramming

среда, апр. 30, 2025 | 1 минута чтения

Metaprogramming

2 семестр
Основы программирования.

Template Specialization

  • В примере в зависимости от порядка функций специализация шаблона является специализацией разных функций. Если мы специализируем тип Т* типом int*, то выберерется int*, а вот если мы специализируем тип T, как int*, а потом напишем функцию для Т*, то выберется последний вариант, как самый удобный

  • Пишем свой is_same

    • пишем по дефолту static constexpr = false
    • Пишем специализицию для одинаковых типов, где эта переменная уже будет равна true
  • Пишем idetity

    • фокус: в шаблоне пишем аргумент Т, а потом Т value, а внутри структуры будет лежать это же значение

    • Также можно сделать инкремент, написав +1

    • А возьмём и кладём auto прямо в шаблоне, и нам круто, не надо указывать ти

    • А теперь возьмём и напишем constexpr переменную, которая будет держать value от нашей структурки, а теперь не надо писать value

  • Metaprogramming функции могут возвращать типы

    • просто пишем через юзинг
    • возвращает тип, поэтому можно положить в другой шаблончик