Would you recommend this nonintrusive approach for types used to inject test seams into code? E.g. consider a program which depends on the file system, or a database, or similar, which needs to be replaced with something else during testing.
Would you recommend this value semantics behavior when injecting these kinds of seams that expose data external to the program that can't be copied? (E.g. we can copy a file handle, but we can't copy the underlying structures backing it because those are outside our programs' control)