Don't copy ScalarNonlinearFunction in VectorOfConstraints #2803
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Extracted from #2788
I'm not too convinced by the current approach.
For
canonical
, I think we need to implementcanonical
with a cache that checks that it creates aliases when it sees a second time an alias to the same sub-expression.For the
copy
inConstraintFunction
, I think we add it mostly to be extra-sure the user does not alter the function but we don't really need it in the context ofMOI.copy_to
sinceadd_constraint
specifies that the model should have its own copy. Maybe we should also haveUnsafeConstraintFunction
that is used insideMOI.copy_to
, it should also safe wasteful copies forScalarAffineFunction
andScalarQuadraticFunction
. So if we have tests that checks that solvers have their own copies inadd_constraint
then it should be safe.