У меня есть функция, которая создает std::bitset
, длина которого является постоянным параметром функции. Это не работает, потому что константа не является «интегральным постоянным выражением». Есть ли способ сделать эту работу?Константы Параметры выражения
Для справки:
void Foo(const std::string &data, const unsigned int size) {
std::bitset<size> Bar(data);
// Do something
return;
}
Вы можете сделать Foo в функции шаблона и сделать размер несимвольным параметром. размер должен быть известен во время компиляции, иначе это не сработает. –
Нет, не с 'std :: bitset'. Для этого требуется постоянная * compile-time *. Вы можете использовать 'vector' или ['boost :: dynamic_bitset'] (http://www.boost.org/doc/libs/1_59_0/libs/dynamic_bitset/dynamic_bitset.html) или аналогичные. –
Я так и думал. Мне очень нравится мой «битсет», потому что я могу выполнять побитовые логические операции и однобитовые логические операции с ними, но если это невозможно сделать, это невозможно сделать. – Woody1193