#include <cstdlib>
#include <iostream>
#include <utility>

template <typename ...Args>
decltype(auto) log(Args&& ...args)
{
	return (std::cout << ... << std::forward<Args>(args)) << std::endl;
}

struct Logger
{
	template <typename ...Args>
	decltype(auto) log(Args&& ...args)const
	{
		return (std::cout << ... << std::forward<Args>(args)) << std::endl;
	}
};

int main()
{
	log("Hello", ", ", "world");
	Logger{}.log("Hello", ", ", "world");
    return EXIT_SUCCESS;
}