# \[Accepted\] SE-0503: Suppressed Default Conformances on Associated Types With Defaults

**URL:** <https://forums.swift.org/t/accepted-se-0503-suppressed-default-conformances-on-associated-types-with-defaults/84774>\
**Category:** Announcements\
**Created:** [February 16, 2026, 10:20pm UTC](https://forums.swift.org/t/accepted-se-0503-suppressed-default-conformances-on-associated-types-with-defaults/84774 "2026-02-16T22:20:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ben-cohen](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/ben-cohen/32/296_2.png) [@ben-cohen](https://forums.swift.org/u/ben-cohen)\
**Post date:** [February 16, 2026, 10:20pm UTC](https://forums.swift.org/t/accepted-se-0503-suppressed-default-conformances-on-associated-types-with-defaults/84774/1 "2026-02-16T22:20:31Z")

</div>

The [review](https://forums.swift.org/t/se-0503-suppressed-default-conformances-on-associated-types-with-defaults/84070) of [SE-0503: Suppressed Default Conformances on Associated Types With Defaults](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0503-suppressed-associated-types.md) has concluded and the proposal has been **accepted**.

Review feedback was light, and mainly focused on the potential future direction of non-primary associated types also being able to default to the copyable behavior. The language steering group believes that the need for this future direction will be informed by adoption of this proposal, and such defaulting behavior could be layered on in future if needed.

Thanks to everyone who participated in the review.

---

<div class="post-metadata">

**Author:** ![CrystDragon](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/crystdragon/32/10461_2.png) [@CrystDragon](https://forums.swift.org/u/CrystDragon)\
**Post date:** [February 24, 2026, 8:18am UTC](https://forums.swift.org/t/accepted-se-0503-suppressed-default-conformances-on-associated-types-with-defaults/84774/2 "2026-02-24T08:18:15Z")

</div>

I'm glad that this proposal get accepted. However, I'm still not sure I fully understand the [default witness](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0503-suppressed-associated-types.md#default-witnesses) section.

The proposal says "even if the default witness for a suppressed associated type conforms to Copyable and/or Escapable, matching generic requirement(s) _are not_ introduced". I fully agree with this, what I don't understand is why it needs a special statement.

This following code is just from the proposal:

```swift
func runForwardsInt(_ it: some Iterable<Int>) {
  _ = copy it.getIter() // OK
}

func runForwardsNC(_ it: some Iterable<NonCopyableType>) {
  _ = copy it.getIter() // error: copy of noncopyable type
}

```

As I understand it, both the return values of `it.getIter()` are just `associatedtype Iter`s, inside these 2 functions, the default implementaion of `ForwardIterator` has no way to be witnessed. Because the `it` passed to `runForwardsInt` can be of a custom type, which does conform to `Iterable<Int>`, but implements a noncopyable `Iter`.

Am I missing something? And what part does "associatedtype default implementation" play here? @kavon

---

<div class="post-metadata">

**Author:** ![kavon](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/kavon/32/9774_2.png) [@kavon](https://forums.swift.org/u/kavon)\
**Post date:** [March 10, 2026, 10:11pm UTC](https://forums.swift.org/t/accepted-se-0503-suppressed-default-conformances-on-associated-types-with-defaults/84774/3 "2026-03-10T22:11:07Z")

</div>

Yeah that example in the proposal is missing a little bit of something. The issue I was trying to get at is when a default will be inferred _and_ there’s a default witness that doesn’t conform to that defaulted protocol. That only happens in this proposal when it’s a suppressed primary associated type that has a default witness that doesn’t conform to either Copyable or Escapable:

```swift
struct SafeFD: ~Copyable {}

protocol File<Descriptor> {
  associatedtype Descriptor: ~Copyable = SafeFD
}

struct Handle: File {} // relies on SafeFD as the default witness

struct UnsafeHandle: File {
  typealias Descriptor = Int
}

func doSomething(_ s: some File) {}

doSomething(Handle()) // error: global function 'doSomething' requires that 'SafeFD' conform to 'Copyable'
doSomething(UnsafeHandle())

```

I wouldn’t expect there to be many protocols with a primary associated type that has a default like this, but it is something worth knowing.
