我想使用带数组的call-by-reference并在这里找到一些似乎可以解决我的问题的东西.但是我现在将其更改为此,我收到错误消息
"模板参数演绎/替换失败".
如果我放的话它会起作用
bool a[3];
Run Code Online (Sandbox Code Playgroud)
但不是变量m.
#include <assert.h>
template <typename T, int Size>
void dosth(T (&a)[Size])
{
assert(Size > 2);
a[2] = false;
}
int main()
{
int m=3;
bool a[m];
dosth(a);
}
Run Code Online (Sandbox Code Playgroud)
布尔a [m]; 被称为可变长度数组,在C++中不受支持.
但是,如果您要使用const unsigned int容量或#define容量,它将是本地存储中的数组.
如果需要一个长度在运行时确定的数组,请考虑使用std::vector.