Por que não posso passar um opcional implicitamente desembrulhado como UnsafeMutablePointer?

Parece que o Xcode 9.3 corrigeum problema que eu estava tendo, mas no Swift 4.1, a segunda metade desse código ainda não é compilada:

var obj: SomeClass!    ; class SomeClass {}

func inoutFunc(_: inout SomeClass?) {}
inoutFunc(&obj)     // works

func pointerFunc(_: UnsafeMutablePointer<SomeClass?>) {}
pointerFunc(&obj)  // <-- COMPILER ERROR

A chamada parainoutFunc agora está bom, mas a chamada parapointerFunc ainda me dá um erro:

Não é possível chamar 'pointerFunc' com uma lista de argumentos do tipo '(inout SomeClass!)'

Ou no contexto original:

Não é possível transmitir um valor imutável do tipo 'ActualClass?' como argumento inout

Semelhante ao meu problema no Swift 4.0 (onde oinoutFunc também não compilou) se eu alterar a declaração paravar obj: SomeClass? então a segunda chamada de função é compilada sem reclamação.

Esse é outro bug do Swift persistente relacionado aos Opcionais Implicitamente Desembrulhados ou issoUnsafeMutablePointer Não se espera que a situação funcione como ainout versão agora faz? Existe uma solução alternativa relativamente limpa?

Fundo:

No código real, opointerFunc call é uma função de estrutura da Apple que inicializa a instância ou retorna um status de erro.

Desde que eu jáguard AppleFrameworkInitializer(&obj) == noErr else { /* … */ }, Não quero lidar com a reatribuição de um opcional temporário ou preciso desembrulhar constantementeobj! em todo o código a seguir.

Ou seja, esse parece ser um caso de uso legítimo para os Opcionais Implicitamente Desembrulhados e estou me perguntando por que ainda não consigo usar um aqui.

questionAnswers(1)

yourAnswerToTheQuestion