$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Peder Holt (peder.holt_at_[hidden])
Date: 2005-02-26 14:12:46
I was looking through the FOR_EACH - implementation, and noticed that
it lacks rvalue detection for Visual C++ 6.0.
After some investigation, I have found one very sleazy way of
detecting rvalue-ness runtime without evaluating the argument more
than once:
# define BOOST_FOREACH_TYPEOF(COL)
\
*(true ? 0 : &::boost::for_each::wrap(COL))
template<typename T>
inline static_any<simple_variant<T const> > contain(int const&
position_test,T const &t, bool const &, mpl::false_)
{
int rvalue_test=int(&t)-int(&position_test);
bool rvalue=(rvalue_test<=8);
return rvalue ? simple_variant<T const>(t) : simple_variant<T const>(&t);
}
Since this relies on the position of objects on the stack, there are
probably cases where it will fail.
Pointers (e.g. string constants) must be handled separately.
Regards
Peder