У меня есть функция шаблона, которая должна работать для всех целочисленных типов:
#include <concepts>
template<typename T>
bool odd(T n) requires std::integral<T>
{
return n & T(1);
}
Теперь я хочу использовать эту функцию с некоторым определяемым пользователем целочисленным типом, например boost :: multiprecision :: cpp_int
#include <boost/multiprecision/cpp_int.hpp>
boost::multiprecision::cpp_int n = ...
std::cout << odd(n) << std::endl;
g cc 10 дает
error: use of function ‘bool odd(T) requires integral<T> [with T = boost::multiprecision ...
, что, конечно, правильно. Что я могу сделать, чтобы исправить это, например, как я могу специализировать стандартную концепцию для своего собственного типа?