boost :: array <char,2>如何将2作为变量传递

ser*_*ous 1 c++ boost

我正在使用boost :: array,其格式为<char,const std :: size_t>

void test(const std::size_t XXX)
{
    boost::shared_ptr<boost::array<unsigned char, XXX>> buf(new boost::array<unsigned char, max_size>);
    .
    .
    .
};
test(100);
test(20);
Run Code Online (Sandbox Code Playgroud)

这是领先的

错误:

错误C2971:'boost :: array':模板参数'N':'size':局部变量不能用作非类型参数

你能给我一个如何传递boost :: array第二个参数的提示吗?

谢谢

Raf*_*cki 6

模板在编译期间被实例化,因此在程序运行之前必须知道它们的参数.

这意味着您不能将变量用作模板参数.这样的参数必须是常量表达式(常量变量不够),具有外部链接的函数或对象的地址,或静态类成员的地址.