私はこのコードを持っていて、理解したいです:
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; };
};