constexpr std::bitset

Daniil Goncharov
Daniil Goncharov

1. Сделать std::bitset constexpr.

2. Добавить std::initializer_list конструктор.

3. std::string в C++20 теперь тоже constexpr, поэтому конструктор от std::string тоже легко сделать constexpr.

Это было бы удобно для разных constexpr функций с проверками контейнеров.

Например:

constexpr std::array<bool, sizeof...(I)> valid{{is_valid<I>()...}};
constexpr int count = ((valid[I] ? 1 : 0) + ...);

std::array<E, count> values{};
for (int i = 0, v = 0; v < count; ++i) {
  if (valid[i]) {
    ...
  }
}

Можно было бы написать как

constexpr std::bitset<sizeof...(I)> valid{{is_valid<I>()...}};

std::array<E, valid.count()> values{};
for (int i = 0, v = 0; v < count; ++i) {
  if (valid[i]) {
    ...
  }
}
6
рейтинг
simple & useful
Нет комментариев
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения