Унарный побитовый или сложенный в конструкторе bitset

Я пытаюсь сделать структуру, которая инкапсулирует некоторую информацию о функциях. В него включен набор битов, представляющий определенные истинные / ложные поведения. Я пытаюсь сложить пакет параметров в конструктор набора битов, но это не удается.

Вот мой код:

template<uint8_t ID_in, uint8_t...categories_in>
struct Function_Data {

static constexpr const uint8_t ID = ID_in;

// only two categories so far
static constexpr const bitset<2> categories(categories_in|...);

constexpr inline explicit Function_Data() {}
};

Я ожидаю, что разбор categories(categories_in|...) чтобы понять, что я пытаюсь использовать операцию сгиба, но я получаю ошибку ‘categories_in’ is not a type а потом expected ',' or '...' before '|' маркер.

Пробуя линию categories(...|categories_in) дает разные, но похожие сообщения вида «ожидал X вместо Y».

Использование статического приведения к unsigned long long int (для типа параметра конструктора) приводит к expected identifier before static cast, который чувствует себя странно, так как есть имя прямо раньше.

Любая помощь, заставляющая структуру работать, будет оценена.

1

Решение

Вам нужны дополнительные скобки для сложить выражение:

static constexpr const bitset<2> categories{(categories_in|...)};

И, как вы находитесь в определении класса, используйте {} (или же = bitset<2>((categories_in|...))) вместо () построить членов.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]