template
void print(const T& arg) {
	wstringstream ss;
	ss << arg;
	HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
	DWORD charsWritten;
	wstring str = ss.str();
	WriteConsoleW(hStdOut, str.c_str(), str.size(), &charsWritten, NULL);
}

template
void print(const T1& arg1, const T2& arg2, Ts... rest) {
	wstringstream ss;
	ss << arg1 << arg2;
	print(ss.str(), rest...);
}

int main() {
	print(L"这是", 1, L"个类型安全的", L"printf\n");
}