I find it hard to believe that users who understand weak refs would have trouble understanding this class, but that's fine. If you think a bunch of monomorphic variants are better I don't want to argue the point.

It's a definite need though, since otherwise users have to define these by hand, so +1.

Could we also please add versions for the stm types? I've needed at least one of them in the past.