The Swift-implemented ArrayVector class implements IIterable<T> but does not respond to QI for it from WinRT callers.
The problem is that the wrapper class for a given IVector<T> interface implements its vtable's QueryInterface by delegating to CustomQueryInterface, but ArrayVector<T> cannot implement queryInterface for IIterable<T> because the IIDs and wrapper types it would need to create depend on T. It could possibly generate the correct IID based on T, but it instantiating the matching wrapper type would be complex.