[Second review] SE-0390: Noncopyable structs and enums

I'm concerned that the reading as "not" is specifically misleading, since in its generalization, that's not strictly what it means; it's more like "this specific declaration does not promise Copyable". In the fullness of time, we want to allow for conditionally copyable types, which would look like:

enum Optional<Wrapped: ~Copyable>: ~Copyable { ... }

extension Optional: Copyable where Wrapped: Copyable { ... }

so in the original declaration, Wrapped and Optional aren't "not copyable", they are "not assumed to be copyable at this point". They could be copyable elsewhere.

9 Likes