
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? 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. Thanks, Phil.