Boost logo

Boost :

Subject: [boost] [forward] looking for help to keep MSVC7.1 from ICEing
From: Tobias Schwinger (tschwinger_at_[hidden])
Date: 2010-02-26 12:46:59


Hello,

I'm trying to make Forward release-ready and I'd really
like to support MSVC 7.1 which is currently ICEing (in
msc1.cpp, line 2701).

According to online research that ICE typically occurs
when the ODR is violated and the compiler fails to
diagnose it. Although the code should be valid, it's
likely to be about name management.

The code uses an inheritance chain to add call operators
of different arities. IOW the class template for arity N
inherits from the class template for arity N-1.
A 'using base::operator();' is used to pull in the base
class' overloads.

A stripped-down version of this pattern compiles. When I
take out the 'using' declaration the ICE disappears (and
so do the base class' overloads).

Ideas anyone? Anyone keen enough to look into it?

In case of the latter, I recommend the simpler of the two
headers:

   trunk/boost/functional/lightweight_forward_adapter.hpp
   [ link to svn: http://tinyurl.com/ydoyoa4 ]

Thanks,
Tobias


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