Generics which are private to a type

I too am not sure about what exactly you're trying to achieve. You say "private" generics, but I don't understand to whom they're private.

Anyway, if you're looking at this from an API author's perspective, it might be interesting to take a look at this pitch: Proposing to expand `available` to introduce `discouraged`. So in your case, with this feature or with a feature that hides underscore-prefixed types and declarations you could do:

struct C<_T> {

    ...

}

// or

struct C<
  @available(discouraged: "Not meant for public use") T
> {

    ...

}