要捕获数组模板参数的大小,可以使用模板偏特化和递归来实现。下面是一个示例代码:
#include
template
struct ArraySize;
template
struct ArraySize {
static constexpr std::size_t value = N;
};
template
void printArraySize(const T(&)[N]) {
std::cout << "Array size: " << ArraySize::value << std::endl;
}
int main() {
int arr1[5];
double arr2[10];
printArraySize(arr1); // 输出:Array size: 5
printArraySize(arr2); // 输出:Array size: 10
return 0;
}
在上面的示例中,我们定义了一个模板结构体ArraySize
,用于捕获数组模板参数的大小。ArraySize
的偏特化版本接受一个数组参数T[N]
,其中T
是数组类型,N
是数组的大小。在偏特化版本中,我们定义了一个value
静态成员变量来保存数组的大小。
然后,我们定义了一个printArraySize
函数,它接受一个数组参数,并使用ArraySize
来获取数组的大小,并打印出来。
在main
函数中,我们声明了一个int
类型的数组arr1
和一个double
类型的数组arr2
,并调用printArraySize
函数来打印数组的大小。
运行上述代码,将输出数组的大小。对于arr1
,输出为Array size: 5
,对于arr2
,输出为Array size: 10
。