Более сильное требование в C++
Новый концепт можно собрать из
стандартных проверок и логического &&.
Так получают более узкое имя требования без
повторения длинных записей в каждой функции.
Подключите #include <concepts>,
зададим SignedInt и выведем модуль
числа:
#include <concepts>
#include <iostream>
template<typename T>
concept SignedInt = std::integral<T> && std::is_signed_v<T>;
template<SignedInt T>
T abs_value(T value) {
return value < 0 ? -value : value;
}
int main() {
std::cout << abs_value(-17) << "\n";
return 0;
}
Объявите UnsignedInt как
std::integral<T> && std::is_unsigned_v<T>.
Напишите шаблон double_it для
unsigned и выведите удвоенное
11.