> Most often it is not necessary, and not wanted, to enforce a and b having the same type.
That really depends on what you're trying to do. Presenting these two different declarations as somehow equivalent is very misleading and I'm glad that the author didn't do that.