Why isn’t `Double` usable with swift-atomics?

A bit inconvenient, but will this simple wrapper work for you?

extension UnsafeAtomic where Value == UInt64 {
    public var double: Double {
        get { Double(bitPattern: load(ordering: .relaxed)) }
        set { store(newValue.bitPattern, ordering: .releasing) }
    }
}

var val = UnsafeAtomic<UInt64>.create(0)
val.double = 3.14
let x: Double = val.double
2 Likes