Visual Studio 2010 et std :: function

J'ai ce code:

#include <iostream>
#include <functional>

struct A
{
    int operator()(int i) const {
        std::cout << "F: " << i << std::endl;
        return i + 1;
    }
};

int main()
{
    A a;
    std::tr1::function<int(int)> f = std::tr1::ref(a);
    std::cout << f(6) << std::endl;
}

Le but est de passer le foncteur de l'objet par un reference_wrapper, de manière à éviter d'inutiles copie costructor appels.
J'attends la sortie suivante:

F: 6
7

Il fonctionne correctement avec GCC >= 4.4.0, Visual Studio 2008 et avec boost en substituant std::tr1 espace de noms avec boost. Il ne fonctionne pas avec le nouveau Visual Studio 2010 Express Beta 2 et Release Candidate.

Ce sont de nouvelles fonctionnalités C++ buggé dans vs2010?
Ou il y a une erreur ou d'abus dans le code?

source d'informationauteur Dj Gaspa