#pragma once #include #include // #define LOGGER (std::cout << __FILE__ << ":" << __LINE__) struct Logger { Logger() = default; template std::ostream& operator<<(T&& msg) { return std::cout << msg; } ~Logger() { std::cout << std::endl; } }; struct IgnoreLogger { IgnoreLogger() = default; template IgnoreLogger& operator<<(T&& msg) { return *this; } ~IgnoreLogger() = default; }; #define logger() (Logger() << __FILE__ << ":" << __LINE__ << " ") // #define logger1() (Logger() << __FILE__ << ":" << __LINE__ << " ")