Isn&#x27;t coupling both A and B to the global func(A, B) just as bad as coupling B to A in A::func(B) or A to B B::func(A)?<p>The thing you&#x27;re trying to avoid with coupling is that when the dependency changes you might have to change the thing that depends on it, right? Isn&#x27;t global func going to change with the same likelihood as A::func or B::func?<p>I&#x27;m not sure if this is a relevant or not, (but since it relates to your post,) I do often find myself wishing I had multiple dispatch and&#x2F;or some way to extend interfaces to existing types when programming in a language without those features.