Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

has_less_equal

Boost , Chapter 1. Boost.TypeTraits , Alphabetical Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
template <class Lhs, class Rhs=Lhs, class Ret=dont_care>
struct has_less_equal : public true_type-or-false_type {};

Наследства: Если (i) lhs и rhs типа Rhs<=rhs, и (ii) Ret=dont_care или результат выражения lhs можно преобразовать в Ret, то наследуется от true_type, в противном случае наследуется от false_type.

Поведение по умолчанию (Ret=Dont_care) заключается в том, чтобы не проверять значение возврата двоичного оператор<= Если Ret отличается от типа по умолчанию dont_care, значение возврата проверяется на конвертируемость в Ret. Преобразуемое в Ret означает, что возвращаемое значение оператора может быть использовано в качестве аргумента для функции, ожидающей Ret:

void f(Ret);
Lhs lhs;
Rhs rhs;
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.

has_less_equal<long> наследует от true_type.

has_less_equal<int, int, bool> наследует от true_type.

has_less_equal<int, double, bool> наследует от true_type.

has_less_equal<const int> наследует от true_type.

has_less_equal<int*, int> наследует от false_type.

has_less_equal<int*, double*> наследует от false_type.

has_less_equal<int,int, std::string> наследует от false_type.

См. также: Типы операторов

Известные проблемы:

  • Эта черта не может определить, является ли двоичный оператор общедоступным или нет: если оператор<= определен как частный член Lhs, то инстанцирование has_less_equal<> приведет к ошибке компилятора. По этой причине has_less_equal не может использоваться для определения того, имеет ли тип публичный оператор<= или нет.
    структура  {  void<=(const&);; boost::has_less_equal<>::значение; /ошибка: A::operator<=(const A&) является частной 
  • Существует проблема, если оператор существует только для типа A и B является конвертируемым в A. В этом случае компилятор сообщит о двусмысленной перегрузке.
    структура    констA&; структура  B  (); буст::2>бесплатно>::буст::2>
  • Существует проблема при применении этой черты к классам шаблонов. Если оператор структура ;, содержит , , , , , , , , , , , , , , , , , , , , , , <
  • энергонезависимый квалификатор не обрабатывается должным образом и приведет к неопределенному поведению

PrevUpHomeNext

Статья has_less_equal раздела Chapter 1. Boost.TypeTraits Alphabetical Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Alphabetical Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 01:58:39/0.0046849250793457/0