Spec-Zone.ru › C++

C++ named requirements: BitmaskType

Defines a type that can be used to represent a set of constant values or any combination of those values. This trait is typically implemented by integer types, std::bitset, or enumerations (scoped and unscoped) with additional operator overloads.

Требования

Тип битовой маски поддерживает конечное число элементов битовой маски, которые представляют собой различные ненулевые значения типа битовой маски, такие, что для любой пары Ci и Cj, Ci & Ci не равно нулю, а Ci & Cj равно нулю. Кроме того, значение ​0​ используется для представления пустой битовой маски без установленных значений.

Битовые операторы operator&, operator|, operator^, operator~, operator&=, operator|=, и operator^= определены для значений типа битовой маски и имеют ту же семантику, что и соответствующие встроенные операторы для беззнаковых целых чисел, если элементы битовой маски были бы различными целыми степенями двойки.

Следующие выражения допустимы и имеют следующее значение для любого BitmaskType:

X |= Y устанавливает значение Y в объекте X
X &= ~Y сбрасывает значение Y в объекте X
X & Y ненулевой результат указывает, что значение Y установлено в объекте X

Каждый представимый элемент битовой маски определяется как inline(с C++17)constexpr значение типа битовой маски.

Использование

Следующие стандартные типы библиотек удовлетворяют BitmaskType:

  • std::chars_format (с C++17)
  • std::ctype_base::mask
  • std::ios_base::fmtflags
  • std::ios_base::iostate
  • std::ios_base::openmode
  • std::regex_traits::char_class_type (с C++11)
  • std::regex_constants::syntax_option_type (с C++11)
  • std::regex_constants::match_flag_type (с C++11)
  • std::launch (с C++11)
  • std::filesystem::perms (с C++17)
  • std::filesystem::perm_options (с C++17)
  • std::filesystem::copy_options (с C++17)
  • std::filesystem::directory_options (с C++17)

Код, который полагается на некоторые конкретные параметры реализации (например, int n = std::ios_base::hex), не является переносимым, потому что std::ios_base::fmtflags не обязательно неявно преобразуется в int.

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/BitmaskType

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API