Наследства: Если (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_greater_equal<Lhs, Rhs, Ret>::value==true
Если Ret=void, то тип возврата проверяется точно на void.
Header:/has_Greater_equal.hpp или boost/type_traits/has_operator или boosttype_traits>
Совместимость с компилятором: Требуется работа SFINAE (т.е. BOOST_NO_SFINAE не установлен). Этого не поддерживает лишь меньшинство довольно старых компиляторов.
Примеры:
has_greater_equal<Lhs,Rhs,Ret>::value_type является типом bool.
has_greater_equal<Lhs,Rhs,Ret>::значение представляет собой bool интегральное постоянное выражение.
has_greater_equal<int>::value представляет собой bool интегральное постоянное выражение, которое оценивает до true.
Эта черта не может определить, является ли двоичный оператор общедоступным или нет: если оператор>= определен как частный член Lhs, то инстанцирование has_greater_equal<> приведет к ошибке компилятора. По этой причине has_greater_equal не может использоваться для определения того, имеет ли тип публичный оператор>= или нет.
структура :void>=(const&);;boost::has_greater_equal>:value;/ошибка: A::operator>=(const A&) является частной
Существует проблема, если оператор существует только для типа A и B является конвертируемым в A. В этом случае компилятор сообщит о двусмысленной перегрузке.
структура констA&;структура B();буст::2>буст>::буст::2>
Существует проблема при применении этой черты к классам шаблонов. Если оператор структура ;>>>>>>>>>>>>>>>>>>>
энергонезависимый квалификатор не обрабатывается должным образом и приведет к неопределенному поведению
Статья has_greater_equal раздела Chapter 1. Boost.TypeTraits Alphabetical Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.