Turns out that clang doesn't just overflow - it traps if there's an overflow - basically like safe<int> does at compile time.
Upshot is we have to trap overflows at compile time WITHOUT calculating them. In retrospect this is undefined behavior but no matter.
Next iteration will deal with this.
More carefully defined the concepts. That is the concept of the library is now clear:
Trap at either compile or runtime integer operations which yield a result which differs from the normal arithmetic result.
Pending on this check in:
a) only addition is fixed up so far
b) uses BOOST_TYPEOF... rather than decltype(... - final decision sill pending.
c) comments out some compile time checks which should be re-instated.
d) fixed tests so that they actually work!