#pragma once #include <iostream> #include <ostream> class debug_ostream { public: debug_ostream(); void activate(); void deactivate(); template<typename T> debug_ostream& operator<<(const T& arg) { if (m_active) std::cout << arg; return *this; } debug_ostream& operator<<( std::basic_ostream<char>& (*func) (std::basic_ostream<char>&) ); private: bool m_active; }; extern debug_ostream debug_cout;