Questions about raw and typed pointers and generic

The whole thing looks like this:

var myIntArray = Array<Int>(repeating: 10, count: 10)

func mutableRawPointer(to pointer: UnsafeMutableRawPointer,
                       _ body: (UnsafeMutableRawPointer) -> Void)
{
    print("Acquired raw pointer: \(pointer)")
    body(pointer)
    print("Raw pointer END\n")
}

func arrayIntPointer(to pointer: UnsafeMutablePointer<Array<Int>>,
                     _ body: (UnsafeMutablePointer<Array<Int>>) -> Void)
{
    print("Accquired Array<Int> typed pointer: \(pointer)")
    body(pointer)
    print("Array Int pointer END\n")
}

func genericTypedPointer<T>(to pointer: UnsafeMutablePointer<T>,
                            _ body: (UnsafeMutablePointer<T>) -> Void)
{
    print("Accquired generic typed pointer: \(pointer)")
    body(pointer)
    print("Typed generic pointer END\n")
}

func forcedTypedPointer<FT>(_ _: FT,
                            to pointer: UnsafeMutablePointer<FT>,
                            _ body: (UnsafeMutablePointer<FT>) -> Void)
{
    print("Acquired forced generic pointer: \(pointer)")
    body(pointer)
    print("Forced generic pointer END\n")
}

mutableRawPointer(to: &myIntArray){_ in}
arrayIntPointer(to: &myIntArray){_ in}
genericTypedPointer(to: &myIntArray){_ in}
forcedTypedPointer(myIntArray, to: &myIntArray){_ in}
1 Like