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

has_post_decrement

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 Ret=dont_care>
struct has_post_decrement : public true_type-or-false_type {};

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

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

void f(Ret);
Lhs lhs;
f(lhs--); // is valid if has_post_decrement<Lhs, Ret>::value==true

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

Заголовок:#включаетType_traits/имеет_post_decrement.hpp>#включает<#включаетType_traitsType_traits.hppType_traitsType_traits

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

Примеры:

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

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

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

имеет_post_decrement<длинный>наследует отистинный_тип.

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

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

имеет_post_decrement<двойной,двойной>наследует отистинный_тип.

имеет_post_decrement<двойной,int>наследует отистинный_тип.

имеет_post_decrement<bool>наследует отfalse_type.

имеет_post_decrement<constint>наследует отfalse_type.

имеет_post_decrement<void*>наследует отfalse_type.

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

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

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

  • Эта черта не может определить, является ли оператор--общедоступным или нет: еслиоператор--определяется как частный членLhs, то инстанцированиеимеет_post_decrement<Lhs>приведет к ошибке компилятора. По этой причинеимеет_post_decrementне может использоваться для определения, имеет ли тип публичныйоператорAчастный:пустойоператорint;повышение::имеет_post_decrement<A>::значение;// ошибка: A::оператор--(int) является частным[
  • Существует проблема, если оператор существует только для типаАиВявляется конвертируемым вА. В этом случае компилятор сообщит о двусмысленной перегрузке.
    струкция};voidоператорint;intоператороператор[];оператор::
    [
  • Существует проблема при применении этой черты к классам шаблонов. Еслиоператор--определен, но не связывается с заданным типом шаблона, он все равно обнаруживается чертой, которая возвращаетистинноевместоложное. Пример:
    #включает[5
  • летучийклассификатор не обрабатывается должным образом и приведет к неопределенному поведению

PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:58:25/0.0065460205078125/1