Boost logo

Boost :

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


> 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<
> 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, gregod at, cpdaniel at, john at