error[E0700]: hidden type for `impl Trait` captures lifetime that does not appear in bounds
  --> $DIR/impl-trait-captures.rs:10:25
   |
LL | fn foo<'a, T>(x: &T) -> impl Foo<'a> {
   |                  --     ^^^^^^^^^^^^
   |                  |
   |                  hidden type `&ReFree(DefId(0:8 ~ impl_trait_captures[e9f4]::foo), BrAnon(0)) T` captures the anonymous lifetime defined here
   |
help: to declare that the `impl Trait` captures ReFree(DefId(0:8 ~ impl_trait_captures[e9f4]::foo), BrAnon(0)), you can add an explicit `ReFree(DefId(0:8 ~ impl_trait_captures[e9f4]::foo), BrAnon(0))` lifetime bound
   |
LL | fn foo<'a, T>(x: &T) -> impl Foo<'a> + ReFree(DefId(0:8 ~ impl_trait_captures[e9f4]::foo), BrAnon(0)) {
   |                                      ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

error: aborting due to previous error

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