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 && ) &;
};