Boost logo

Boost Users :

From: Ben Hutchings (ben.hutchings_at_[hidden])
Date: 2004-07-05 10:57:55

Adrian Stoica <adrian_stoica_at_[hidden]> wrote:
> I'm not aware of any such tools, but it could be done with a Perl
> script that removes the includes one at a time, and then invokes the
> compiler. If the file compiles ok, it's probably safe to remove that
> include.

No, unfortunately not. A header might appear to be redundant because
it is included by another, yet this may be a mere implementation detail
which is subject to change and should not be relied upon. In the
absence of a true module system this is impossible to determine. Also
it could be that the header defines template specialisations, or macros
with the same names as functions/objects. Removing such a header might
not make the program ill-formed but could still break it subtly.
Instantiating a template in one translation unit for the same template
arguments for which there is an explicit specialisation in another
translation unit results in undefined behaviour. With sufficient
testing you can *probably* avoid such mishaps but I would be very wary
of trying to automate this.

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at