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

has_logical_or

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_logical_or : public true_type-or-false_type {};

Наследники:Если (i)lhsтипаLhsиrhsтипаRhsможно использовать в выраженииlhs| |rhsи (ii)Ret=dont_careили результат выраженияlhs| |rhsконвертируется в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_logical_or<Lhs, Rhs, Ret>::value==true

ЕслиRet=void, то тип возврата проверяется на то, чтобы быть точноvoid.

Заголовок:#включает<Type_traits.>[включает][включает][включает][включает][включает][включает][включает][включает][включает]

Совместимость компиляторов:Требуется работа SFINAE (т.е. BOOST_NO_SFINAE не установлен). Этого не поддерживает лишь меньшинство довольно старых компиляторов.

Примеры:

имеет_logical_or<Lhs,Rhs,Ret>::значение_typeявляется типомbool.

имеет логическое_или<Lhs,Rhs,Ret>::значениепредставляет собойинтегральное постоянное выражение.

имеет_логическое_или<int>::значениеявляетсяинтегральной постоянной экспрессией, которая оцениваетистинное.

имеет_logical_or<bool>наследует отtrue_type.

имеет_логическое_или<int,int,bool>наследует отtrue_type.

имеет_logic_or<int,int,долго>наследует отtrue_type.

имеет_логическое_или<int,двойное,bool>наследует отtrue_type.

имеет_logical_or<constint,intint>::значениенаследует отtrue_type.

имеет_logical_or<int,int,std::>наследует отfalse_type.

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

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

  • Эта черта не может определить, является ли двоичныйоператор| |публичным или нет: еслиоператор| |определяется как частный членLhs, то инстанциацияимеет_логическое_или<Lhs>приведет к ошибке компилятора. По этой причинеимеет_логическое_илине может использоваться для определения, имеет ли тип публичныйоператорили нет.
    структурачастнаяпустотаоператорконстконст];повышение::имеет_логическое_или>значение[gt];:значение;// ошибка: A::оператор | | [const A&] является частным
  • Существует проблема, если оператор существует только для типаAиBявляется конвертируемым вA. В этом случае компилятор сообщит о двусмысленной перегрузке.
    structvoid| |const&,const&;конст
    [460
  • Существует проблема при применении этой черты к классам шаблонов. Еслиоператор| |определен, но не связывается для данного типа шаблона, он все равно обнаруживается чертой, которая возвращаетистинноевместоложное. Пример:
    #включает][
  • летучийклассификатор не обрабатывается должным образом и приведет к неопределенному поведению

PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:54:36/0.0094289779663086/1