// check-pass #![feature(const_trait_impl)] #![feature(const_precise_live_drops)] use std::marker::Destruct; const fn foo(res: Result) -> Option where E: ~const Destruct { match res { Ok(t) => Some(t), Err(_e) => None, } } pub struct Foo(T); const fn baz(res: Result, Foo>) -> Option> where T: ~const Destruct, E: ~const Destruct, { foo(res) } fn main() {}