>>>>> "Angus" == Angus Leeming <[EMAIL PROTECTED]> writes:

Angus> How would that help? enums cannot be forward declared, so any
Angus> header file declaring a function that is passed an enum must
Angus> #include the header file that defines the enum. It makes not a
Angus> jot of difference whether the enum is LColor::color or
Angus> LColor_color.

The difference is whether one has to include std_string.h and
boost/scoped_ptr.hpp. I'd be surprised if this was negligible
(especially the second one).

Angus> That's why 270+ object files are dependent upon LColor.h.

If I understand correctly, the bulk of that is lyxfont.h. 

Angus> That means any change to the enum results in 270 files being
Angus> recompiled. 200 of them unnecessarily. (I have after all spent
Angus> some time analyzing the dependencies ;-)

Yes, I know that and I am very impressed...

Angus> My proposal has refined. See attached. The template is now
Angus> trivial.

I understand that you see things on terms of dependencies. I am more
interested in compile times and disk space. I am not sure that the
template solution is necessarily better in this respect...

Also, I thought it was not possible to forward-declare a template
instantiation.

JMarc

Reply via email to