Boost logo

Boost :

Subject: [boost] [system] error_code.hpp - questionable includes
From: Christian Holmquist (c.holmquist_at_[hidden])
Date: 2010-06-04 03:38:57


I noticed that system/error_code.hpp caused some unexpected increase in
compilation time, and looked trough its includes.

The following seems not needed:

#include <boost/cstdint.hpp>
#include <boost/assert.hpp>
#include <boost/operators.hpp>
#include <boost/noncopyable.hpp> // 1)
#include <stdexcept>
#include <functional> // 2)

noncopyable is used to tell that a class (error_category) with pure virtual
functions cannot be copied.
This is implicit in the language, so really not needed. Unless there's a
compelling reason to make sure derived classes can't
be copyable either, but I didn't see any reason for this? I didn't look very
close though, could've missed it.

inclusion of <functional> seems only needed to have the following:
      bool operator<( const error_category & rhs ) const
        return std::less<const error_category*>()( this, &rhs );
I can't guess the reason for using std::less instead of simply writing '<',
but surely it can be expressed without std::less, no?

And before getting the common Booster's answer when asking to remove
Yes, I am aware of precompiled headers. I use them, too. =)


P.S. Would it be too much to ask for having a separate header for the
error_code's ostream operators?

Boost list run by bdawes at, gregod at, cpdaniel at, john at