Why are two using clauses resolving to the same type seen as ambigious in gcc
Before looking at alias resulting type, (and accessibility) we look at names and indeed, NetworkPacket might be MultiCmdQueueCallback::NetworkPacket or PlcMsgFactoryImplCallback::NetworkPacket The fact they both point to Networking::NetworkPacket is irrelevant. We do first name resolution, which results in ambiguity.