Должны ли неявно сгенерированные операторы присваивания быть & ref-квалифицированными?
Следующий код компилируется без проблем на gcc 4.8.1:
#include
struct foo
{
};
int main()
{
foo bar;
foo() = bar;
foo() = std::move( bar );
}
Кажется, неявно сгенерированные операторы присваивания дляfoo
не&
ref-qualified и может быть вызван на rvalues. Это правильно в соответствии со стандартом? Если так, то какая причина дляне требующий неявно сгенерированных операторов присваивания быть&
иая квалификация?
Почему нетСтандарт требует, чтобы было сгенерировано следующее?
struct foo
{
foo & operator=( foo const & ) &;
foo & operator=( foo && ) &;
};