
#include "loud_bool.hpp"
#include <ios>
#include <iostream>

loud_bool::loud_bool(bool decorated)
    : result(decorated)
    , ignored(true)
{
    // all done
}

loud_bool::loud_bool(const loud_bool & other)
    : result(other.result)
    , ignored(other.ignored)
{
    other.ignored = false;
}
    
loud_bool::~loud_bool()
{
    if (ignored)
    {
        std::cerr.setf(std::ios_base::boolalpha);
        std::cerr << "WARNING: return " 
                  << result 
                  << "; is being ignored" 
                  << std::endl;
    }
}

loud_bool::operator bool () const 
{
    ignored = false;
    return result;
}
