Я пытаюсь создать структуру, которая инкапсулирует некоторую информацию о функциях. Включенный в это набор битов, представляющий определенные истинные / ложные поведения. Я пытаюсь сложить пакет параметров в конструктор набора битов, но это не удается.
Вот мой код:
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
, что выглядит странно, поскольку прямо перед именем есть имя.
Буду признателен за любую помощь в получении структуры.