Наследства: Если (i) lhs и rhs типа Rhs<=rhs, и (ii) Ret=dont_care или результат выражения lhs можно преобразовать в Ret, то наследуется от true_type, в противном случае наследуется от false_type.
Поведение по умолчанию (Ret=Dont_care) заключается в том, чтобы не проверять значение возврата двоичного оператор<= Если Ret отличается от типа по умолчанию dont_care, значение возврата проверяется на конвертируемость в Ret. Преобразуемое в Ret означает, что возвращаемое значение оператора может быть использовано в качестве аргумента для функции, ожидающей Ret:
voidf(Ret);Lhslhs;Rhsrhs;f(lhs<=rhs);// is valid if has_less_equal<Lhs, Rhs, Ret>::value==true
Если Ret=void, то тип возврата проверяется точно на void.
Header:/has_less_equal.hpp или /type_traits/has_operator или type_traits>
Совместимость с компилятором: Требуется работа SFINAE (т.е. BOOST_NO_SFINAE не установлен). Этого не поддерживает лишь меньшинство довольно старых компиляторов.
Примеры:
has_less_equal<Lhs,Rhs,Ret>::value_type является типом bool.
has_less_equal<Lhs,Rhs,Ret>::значение представляет собой bool интегральное постоянное выражение.
has_less_equal<int>::значение представляет собой bool интегральное постоянное выражение, которое оценивает до true.
Эта черта не может определить, является ли двоичный оператор общедоступным или нет: если оператор<= определен как частный член Lhs, то инстанцирование has_less_equal<> приведет к ошибке компилятора. По этой причине has_less_equal не может использоваться для определения того, имеет ли тип публичный оператор<= или нет.
структура{ void<=(const&);;boost::has_less_equal<>::значение;/ошибка: A::operator<=(const A&) является частной
Существует проблема, если оператор существует только для типа A и B является конвертируемым в A. В этом случае компилятор сообщит о двусмысленной перегрузке.
структура констA&;структура B();буст::2>бесплатно>::буст::2>
Существует проблема при применении этой черты к классам шаблонов. Если оператор структура ;, содержит , , , , , , , , , , , , , , , , , , , , , , <
энергонезависимый квалификатор не обрабатывается должным образом и приведет к неопределенному поведению
Статья has_less_equal раздела Chapter 1. Boost.TypeTraits Alphabetical Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.