Обратите внимание, что имя «assign_teilitary» указывает, что назначение происходит от объекта, который является временным и, следовательно, может быть уничтожен в процессе назначения. Оператор присваивания принимает некоторый обычный объект, который вы, возможно, захотите использовать позже, поэтому его нельзя уничтожить во время присваивания. В этом Boost-коде «assign_teven» является синонимом оператора присваивания rvalue , в то время как оператор присваивания, который вы показали выше, является стандартным оператором присвоения ссылок const (lvalue), поэтому вы ожидаете такого рода несоответствие между ними.
Я согласен, однако, оператор присваивания обычно реализуется с помощью трюка копирования и обмена (создайте копию с помощью конструктора копирования, а затем поменяйте местами с копией). Однако стандарт уже определяет автоматическую реализацию оператора присваивания компилятором при отсутствии явного определения, и поэтому изменение реализации по умолчанию потенциально может нарушить существующий код.