База Hintsage

Шаблоны

Templates, специализация, вывод типов и метапрограммирование.

Практика

Вопросы: Шаблоны

При проектировании API нужно, чтобы тип выводился только из первого аргумента, а второй лишь проверялся после вывода. Какой тип T будет выбран и что напечатает программа?

#include <iostream>
#include <type_traits>

template<class T>
void check(T value, std::type_identity_t<T> limit) {
    std::cout << (std::is_same_v<T, int> ? "int" : "other");
}

int main() {
    check(7, 2.5);
}

Разберите выбор перегрузки и назовите вывод программы. Как механизм частичного упорядочивания шаблонов влияет на вызов f(&value)?

#include <iostream>

template<class T>
void f(T) { std::cout << "general"; }

template<class T>
void f(T*) { std::cout << "pointer"; }

int main() {
    int value = 0;
    f(&value);
}
Программирование C++ШаблоныРазработчик библиотек на C++

Показано 2140 из 50