Switching off implicit conversion

I see. You’re helping me clarify my own thinking here.

I think mostly, my problem is with the :: notation.

x::T in certain contexts means typeassert(x, T). That’s fine.

In other contexts, it meas typeassert(convert(T, x), T). That’s what I would want to switch to typeassert(implicit_convert(T, x), T).

This would allow other (nice?) implicit conversions to remain, such as the ones that allow Meter(1) + CentiMeter(1).

But that doesn’t solve other porblems, such the hidden copying of data mentioned in: Why does this conversion happen implicitly?. Or maybe it does, actually.