Does anyone know why the following generates an error on VC9?
class Elem;
class ElemVec : public vector<Elem>
{
    public:
        void foo();
};
void ElemVec::foo()
{
    BOOST_FOREACH(Elem& elem, *this)
    {
        // Do something with elem
    }
    return;
}
The error I get is:
error C2355: 'this' : can only be referenced inside non-static member functions
The only (hack) solution I have right now which compiles without error is:
void ElemVec::foo()
{
    ElemVec* This = this;
    BOOST_FOREACH(Elem& elem, *This)
    {
        // Do something with elem
    }
    return;
}