Re[7]: Амбигус оператор
От: rg45 СССР  
Дата: 14.04.25 12:58
Оценка: 8 (1) +2
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, pilgrim_, Вы писали:


_>>Оффтоп. Мимо проходил . По мотивам соседней темы посмотрел на твои is_bool/_is_char: https://github.com/al-martyn1/marty_format/blob/9bc7c73884f74e9fc8dbcc76e5612d504bc21cce/utils.h#L364C51-L364C52.

_>>Может не в курсе, но is_same суровый метод, и для него типы с cv-квалификаторами это разные типы, для игноар cv можно заюзать remove_cv_t, напр:
_>>
_>>template<typename T> using is_bool = std::is_same<std::remove_cv_t<T>, bool>;
_>>



M>Спасибо!


Здесь уместно будет заюзать std::decay дабы полностью очистить тип от разного рода модификаторов, в т.ч. и ссылок, и тем самым избавиться от лишнего геморроя при работе с формальными параметрами функций:

template<typename T> using is_bool = std::is_same<std::decay_t<T>, bool>;


А ещё все вот эти метафунции std::is_... канули в прошлое с приходом концептов. То же самое, но по-современному:

template<typename T> concept Bool = std::same_as<std::decay_t<T>, bool>;

static_assert(Bool<const bool&>);

void foo(Bool auto b) {/* . . . */}
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 14.04.2025 13:03 rg45 . Предыдущая версия . Еще …
Отредактировано 14.04.2025 13:02 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.