にゃははー

はへらー

可変長引数がらくになったお

いままで可変長引数は面倒だったから使わなかったけど、C++0xの可変長テンプレート引数(こういう名称でいいのか?)を使ってみたらこれがなかなか。
いままでの変なマクロがないし、再帰で書けるのがいいですね。directxをいじるときにバッファに大量に書き込むのが楽になりそうだ。型の安全性もとれるしね。

とはいえこんな程度の人間が思いつくことなんてもう大抵実装されてたりするので意味があるのかなぁ。悲しいなぁ。

以下実験コード

#include <iostream>
using namespace std;

typedef unsigned long DWORD;

DWORD root[ 10 ] = { 0 };

void hoge( DWORD * )
{
}

template < typename... Args >
  void hoge( DWORD *ptr, DWORD num, Args... args )
{
    *ptr = num;
    hoge( ptr + 1, args... );
}

template < typename... Args >
  void hoge( DWORD num, Args... args )
{
    *root = num;
    hoge( root + 1, args... );
}

int main( void )
{
    for ( int i = 0; i < 10; ++i )
    {
        root[ i ] = 0;
    }

    hoge( 1, 2, 3, 4 );

    for ( int i = 0; i < 10; ++i )
    {
        cout << root[ i ] << endl;
    }

    return 0;
}