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'의'Y'입니다. 또한 전문화는'template <>'이어야합니다 ('int N, int Y'를 제거하십시오). 그리고 호출의 재귀 적 특성을 고려할 때 흥미로운 배열을 제공해야합니다. 아마도 더 짧은 배열에 대한 참조로 캐스트를해야 할 것입니다. –