#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;
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHV0aWxpdHk+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KZGVjbHR5cGUoYXV0bykgbG9nKEFyZ3MmJiAuLi5hcmdzKQp7CglyZXR1cm4gKHN0ZDo6Y291dCA8PCAuLi4gPDwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpKSA8PCBzdGQ6OmVuZGw7Cn0KCnN0cnVjdCBMb2dnZXIKewoJdGVtcGxhdGUgPHR5cGVuYW1lIC4uLkFyZ3M+CglkZWNsdHlwZShhdXRvKSBsb2coQXJncyYmIC4uLmFyZ3MpY29uc3QKCXsKCQlyZXR1cm4gKHN0ZDo6Y291dCA8PCAuLi4gPDwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpKSA8PCBzdGQ6OmVuZGw7Cgl9Cn07CgppbnQgbWFpbigpCnsKCWxvZygiSGVsbG8iLCAiLCAiLCAid29ybGQiKTsKCUxvZ2dlcnt9LmxvZygiSGVsbG8iLCAiLCAiLCAid29ybGQiKTsKICAgIHJldHVybiBFWElUX1NVQ0NFU1M7Cn0=