#include <iostream>

template < typename T > void write( T&& arg )
{
    std::cout << "#args " << 1 << " => " ;
    std::cout << "write: " << arg << '\n' ;
}

template < typename FIRST, typename... REST > void write( FIRST&& first, REST&&... rest )
{
    std::cout << "#args " << 1 + sizeof...(rest) << "  =>  " ;
    write(first) ;
    write(rest...) ;
}

int main()
{
    int i = 3 ;
    double d = 7.89 ;
    write( i, &i, d, -120000000000012LL, "hello world" ) ;
}
