It is imprecise to say “initialize a temporary Degrees{2}
, and then copy-assign it” here, since Degrees{2}
is a prvalue.
In a new edition of the book, I should consider rewording it a bit. It could say “move-assign” instead of “copy-assign”, but it might be better to just say “assign” here. The expression is simply called an “assignment expression”, and whether a move or copy constructor is used is not really interesting for the question.
I should also consider rewording the bit about initializing a temporary, since no temporary will actually materialize here.