#include <string>
#include <stdio.h>

namespace fmt {

template< class ...Args >
std::string sprintf( const char * f, Args && ...args ) {
	int size = snprintf( nullptr, 0, f, args... );
	std::string res;
	res.resize( size );
	snprintf( & res[ 0 ], size + 1, f, args... );
	return res;
}

}

#include <iostream>
using namespace std;

int main() {
	cout << fmt::sprintf( "%s %d %.1f\n", "Hello", 42, 33.22 );
	return 0;
}