>>38
template< class T, int N > class Arg
{
public:
  Arg( T val, ... )
  {
    this->array_[ 0 ] = val;
    va_list list;
    va_start( list, val );
    for( int i = 1; i < N; ++ i )
    {
      this->array_[ i ] = va_arg( list, T );
    }
    va_end( list );
  }
  operator T*(){ return this->array_; }
private:
  T array_[ N ];
};
hoge( Arg<int,5>(0,1,2,3,4) );

これでいいだろ