Os operadores de atribuição gerados implicitamente devem ser qualificados?

O código a seguir compila sem problemas no gcc 4.8.1:

#include <utility>

struct foo
{
};

int main()
{
    foo bar;

    foo() = bar;
    foo() = std::move( bar );
}

Parece que os operadores de atribuição gerados implicitamentefoo não são& ref qualificado e, portanto, pode ser chamado em rvalues. Isso está correto de acordo com o padrão? Se sim, qual razão existe paranão exigindo operadores de atribuição gerados implicitamente& ref qualificado?

Por que o padrão não exige que o seguinte seja gerado?

struct foo
{
  foo & operator=( foo const & ) &;

  foo & operator=( foo && ) &;
};

questionAnswers(2)

yourAnswerToTheQuestion