implement AtomicType, implicit_cast<>