E0304 没有与参数列表匹配的函数模板实例

问题遇到的现象和发生背景

用的动态数组,但是函数模板实例化那里的参数不知道填什么。

问题相关代码,请勿粘贴截图

#include
using namespace std;
int i=0,b=0,n,flag;
template <typename T,int n>
void sort(T a[n]) {
while (1) {
flag = 0;
for (i = 1; i < n; i++) {
if (a[i] < a[i - 1]) { b = a[i]; a[i] = a[i - 1]; a[i - 1] = b; flag++; }
}
if (flag == 0)break;
};
i = 0;
return;
}
int main() {
cin >> n;
char* a = new char[n];
while (i < n) {
cin >> a[i];
i++;
};
i = 0;
sort <char, n>(a);
while (i < n) {
cout << a[i] << " ";
i++;
};
i = 0;
int c[3] = { 1,6,3 };
sort<int, 3>(c);
while (i < n) {
cout << c[i] << " ";
i++;
};
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

T a[n]的n。
定义数组类型的大小不能用变量噢,需要用常量, 字面值常量、宏定义、或者类型修饰符为constexpr的常量。
要么申请动态内存,要么使用vector容器