Разница лишь в том, как вы соблюдаете протокол.
В первом случае соответствие B
подразумевает соответствие A
.
struct BImpl: B {} // `A` is implied here
В последнем случае соответствие B
требует соответствия A
, но неявно создает его:
struct BImpl: A, B {} // `A` is explicitly required here