常量表达式参数

Constant Expression Parameters

我有一个创建 std::bitset 的函数,其长度是一个常量函数参数。它不起作用,因为常量不是 "integral constant expression"。有什么方法可以使它工作吗?

供参考:

void Foo(const std::string &data, const unsigned int size) {
    std::bitset<size> Bar(data);
    // Do something
    return;
}

std::bitset 的大小需要在编译时评估。您可以使它足够大(如果您知道您可能需要的最大尺寸)或使用其他替代方案,如 Igor Tandetnik 建议的 boost::dynamic_bitset