#if !defined WARN_IF_IGNORED_INCLUDED || defined WARN_IF_IGNORED_INCLUDED_TEMPLATE #error "warn_if_ignored-template.hpp" #included directly #endif #define WARN_IF_IGNORED_INCLUDED_TEMPLATE #include #include template warn_if_ignored::warn_if_ignored( const result_type & decorated ) : result(decorated) , ignored(true) { // all done } template warn_if_ignored::warn_if_ignored( const warn_if_ignored & other ) : result(other.result) , ignored(other.ignored) { other.ignored = false; } template warn_if_ignored::~warn_if_ignored() { if (ignored) { std::cerr << "WARNING: return " << result << "; is being ignored" << std::endl; } } template warn_if_ignored::operator result_type () const { ignored = false; return result; }