Boost logo

Boost :

From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2007-01-24 10:30:38


Boris,

> Hartmut Kaiser wrote:
> > Ok. But in this case the names are not 'original'. They come from
> > manual template instatiations.
>
> I, obviously, don't know all the details, but it seems to me
> that the problem has to do with manual instantiations in
> instantiate_re2c_lexer.cpp and instantiate_re2c_lexer_str.cpp modules:
>
> instantiate_re2c_lexer.cpp:
> ---------------------------
> template struct boost::wave::cpplexer::new_lexer_gen<
> BOOST_WAVE_STRINGTYPE::iterator>;
> template struct boost::wave::cpplexer::new_lexer_gen<
> BOOST_WAVE_STRINGTYPE::const_iterator>;
>
> instantiate_re2c_lexer_str.cpp:
> -------------------------------
> template struct
> boost::wave::cpplexer::new_lexer_gen<std::string::iterator>;
> template struct
> boost::wave::cpplexer::new_lexer_gen<std::string::const_iterator>;
>
> Assuming that BOOST_WAVE_STRINGTYPE evaluates to std::string,
> it results in two identical instantiations. It is OK on a
> platform supporting comdats, but Tru64 (and AlphaVMS for that
> matter) can deal with it only in local template instantiation
> mode. Follows an example.

Thanks for looking into this. I initially had the same idea. But
unfortunately your assumption is not correct, as BOOST_WAVE_STRINGTYPE
normally is defined as some flex_string<...> type (see the mangled names
refer to flex_string as well). I will add some safe guards to avoid this
situation, though.

Still not sure, what's going on here. I'm pretty sure I have not even
touched these template instantiations for years.
Regards Hartmut


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