If you define a variable with type auto and initialize it
with the result of a builder chain -- e.g.
auto var = Draw().x(0)
-- the resulting variable will be an instance of
srb2::Draw::Chain, and calling builder methods on it will
modify the instance itself, instead of creating a
temporary, like an instance of srb2::Draw would.
Hiding the copy assignment can make this a little more
obvious by emitting an error if you try to reassign the
variable later. E.g.
var = var.x(0)
That's the best I can do to mitigate this.