Когда у класса нет явно определенного оператора присваивания, существует неявно определенный оператор.
В вашем случае существует неявно определенный оператор присваивания копии в форме
vector2D& operator=(vector2D const& rhs);
Вы можете использовать любое выражение в правой части такого назначения, если оно может быть преобразовано в vector2D const&
. В вашем случае {1, 2}
действительно удовлетворяет этому требованию. По этой причине
v1 = {1,2};
в порядке. Это как если бы вы использовали:
v1 = vector2D{1,2};