I think this should work with:
```scala
def distinct(implicit ord: Ordering[_ >: T]): TypedPipe[T] = {
  // cast because Ordering is not contravariant, but should be (and this cast is safe)
  implicit val ordT: Ordering[T] = ord.asInstanceOf[Ordering[T]]
  map{ (_, ()) }.group.sum.keys
}
```

Some more hints and comments here:
http://www.scala-lang.org/node/10664

The problem is we don't want to change the type, which could confuse users. Even though this code is uglier inside, the type signature is clearer, in my view.