0
我可以使這樣的工作?解決功能模板部分專業化
template <int N, int Y>
constexpr int f(char *(&arr)[Y])
{
return N * f<N - 1, Y - 1>();
}
// Y must appear here too because it's used in parameters
// and if I remove this I get "no matching function" error
template <int N, int Y>
constexpr int f<1, 1>(char *(&arr)[Y]) // run this when Y == 0 and N == 0
{
return 1;
}
int main()
{
size_t x = f<4,4>();
printf("x = %zu\n", x);
}
不是'Y'多餘? – legends2k
@ legends2k:這是一個代碼示例。函數主體本身可能沒有多大意義 –
你不能有一個大小爲0的數組,所以如果你需要'arr'參數,你需要專注於別的東西 - 也許''''''''''''1。此外,專業化應該是'template <>'(刪除'int N,int Y')。你需要提供一個數組,在給定調用的遞歸性質的情況下這應該很有趣 - 你可能需要對一個更短的數組進行轉換。 –