That's why some states (e.g. Texas) require that all toll calls be dialed as 1+ _regardless of area code_, and local calls cannot be dialed as 1+. If you dial a number wrong, you get a message telling you how to do it properly (and why).
In some places that "solution" is _not_practical_. As in where the same three digit sequence is in use as a C.O. 'prefix', *and* as an areacode. (an where, in some 'perverse' situations, the foreign area-code is a 'non-toll' call, yet the bare prefix within the areacode is a toll call.
Oh, it works technically, local is 10D, toll is 1+10D, but since they don't have permissive dialing, Texans have to memorize lists of local prefixes in order to be able to use their phones. Way to go. I agree that life would be simpler if there were some straightforward way to ask telcos whether a call from a->b was local or toll. R's, John