Boost logo

Boost :

From: Giovanni Piero Deretta (gpderetta_at_[hidden])
Date: 2007-11-09 03:31:19


On Nov 8, 2007 8:55 PM, Michael Marcin <mmarcin_at_[hidden]> wrote:
> [...]
> And is also not legal or portable IIRC because an implementation is
> allowed to add extra template parameters to a type as long as they have
> defaults and these would break your forward declarations.
>

It is techinically illegal, but in practice it works almost
everywhere. When it doesn't work
(for example libstdc++ in debug mode) you can fall back to including
the standar headers.
Also I think that there has been a defect report and now
implementations are no longer allowed
to add defaulted parameters to containers, but I'm not really sure about that.

> IMO all standard headers should have corresponding fwd headers like the
> legacy iosfwd header, but since they don't AFAIK the only legal and
> portable way to get the type of a standard container is to include its
> header.
>

Writing compiler specific workaround and optimizations is IMHO all
fine, as long as you have a safe and portable fallback. In this case
the optimization is for compile time and the fallback is completely
portable.

--
gpd

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk