#![feature(unsized_tuple_coercion, unsized_fn_params)] struct A(X); fn udrop(_x: T) {} fn foo() -> Box<[u8]> { Box::new(*b"foo") } fn tfoo() -> Box<(i32, [u8])> { Box::new((42, *b"foo")) } fn afoo() -> Box> { Box::new(A(*b"foo")) } impl std::ops::Add for A<[u8]> { type Output = (); fn add(self, _rhs: i32) -> Self::Output {} } fn main() { udrop::<(i32, [u8])>((42, *foo())); //~^ERROR E0277 udrop::>(A { 0: *foo() }); //~^ERROR E0277 udrop::>(A(*foo())); //~^ERROR E0277 }