//@ check-pass
#![feature(type_alias_impl_trait)]
type A = impl Sized;
fn f1() -> A {
0
}
type B = impl ?Sized;
fn f2() -> &'static B {
&[0]
type C = impl ?Sized + 'static;
fn f3() -> &'static C {
type D = impl ?Sized;
fn f4() -> &'static D {
&1
fn main() {}