Tensor copy requires to pass itself to TensorImpl constructor but TensorImpl has no such constructor
Current implementation accidentally works as implemented backend happen to have the right constructor but, as it seems to be implied by the copy semantic, it should be part of the abstract API.
Design issue: current API design may introduce a circular dependency between Tensor and TensorImpl (currently testing a forward declaration to see if it's sufficient for breaking the dependency).
Edited by laurent soulier