error[E0277]: the size for values of type `X` cannot be known at compilation time
  --> $DIR/unsized-trait-impl-trait-arg.rs:8:17
   |
LL | impl<X: ?Sized> T2<X> for S4<X> {
   |      -          ^^^^^ doesn't have a size known at compile-time
   |      |
   |      this type parameter needs to be `std::marker::Sized`
   |
note: required by a bound in `T2`
  --> $DIR/unsized-trait-impl-trait-arg.rs:4:10
   |
LL | trait T2<Z> {
   |          ^ required by this bound in `T2`
help: consider removing the `?Sized` bound to make the type parameter `Sized`
   |
LL - impl<X: ?Sized> T2<X> for S4<X> {
LL + impl<X> T2<X> for S4<X> {
   |
help: consider relaxing the implicit `Sized` restriction
   |
LL | trait T2<Z: ?Sized> {
   |           ++++++++

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
