我有这段代码,想了解:
template <unsigned...>
struct sum;
template<unsigned size>
struct sum<size>
{
enum {value = size};
};
template<unsigned size, unsigned... sizes>
struct sum<size, sizes...>
{
enum { value = size + sum<sizes...>::value };
};
int _tmain(int argc, _TCHAR* argv[])
{
sum<1, 2>::value;
return 0;
}
我不明白为什么必须存在未实现的总和(它需要无符号......就像最后一个结构特化一样,没有冲突吗?)以及如何使用模板部分中的相同参数来特化总和(e.g. sum<size, sizes...>
与template <unsigned size, sizes...>
. 为什么波纹管不起作用?
template<unsigned size>
struct sum
{
enum {value = size};
};
template<unsigned size, unsigned... sizes>
struct sum
{
enum { value = size + sum<sizes...>::value; };
};