#pragma once #include #include namespace ipc { namespace detail { template void print(O out, char const * str) { std::fprintf(out, "%s", str); } template void print(O out, char const * fmt, P1&& p1, P&&... params) { std::fprintf(out, fmt, std::forward(p1), std::forward

(params)...); } } // namespace detail inline void log(char const * fmt) { ipc::detail::print(stdout, fmt); } template void log(char const * fmt, P1&& p1, P&&... params) { ipc::detail::print(stdout, fmt, std::forward(p1), std::forward

(params)...); } inline void error(char const * str) { ipc::detail::print(stderr, str); } template void error(char const * fmt, P1&& p1, P&&... params) { ipc::detail::print(stderr, fmt, std::forward(p1), std::forward

(params)...); } } // namespace ipc