Boost logo

Boost Users :

Subject: Re: [Boost-users] Forward declarations and iterator_facade<>
From: David Abrahams (dave_at_[hidden])
Date: 2010-10-15 13:02:45


At Fri, 15 Oct 2010 17:24:42 +0100,
Phil Endecott wrote:
>
> Dear Experts,
>
> I have code something like this:
>
> struct S;
>
> class iter:
> public boost::iterator_facade<iter,S,......>
> { ... };
>
> struct S {
> ...
> };
>
>
> This used to work, but stopped recently; I believe it may have been
> after upgrading gcc, not after upgrading Boost itself, but I'm
> uncertain about that. The problem is that something inside
> iterator_facade calls boost::is_POD<S>, which (not unreasonably)
> doesn't seem to work for the forward-declared S.
>
> I've never been entirely sure what you're allowed to do with
> forward-declared types like that. Was I just lucky that it worked
> before, or is this a regression?

I guess you were just lucky, because we never tested for or intended
to provide that capability.

> Re-ordering the code to remove the circular dependencies will be
> painful, so if anyone has any other hints I would love to hear them.

I'm afraid there's not going to be any other choice for you unless we
are somehow able to add that capability in Boost and you are able to
wait for it.

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net