The `+` type operator was used in an ambiguous context. Erroneous code example: ```compile_fail,E0178 trait Foo {} struct Bar<'a> { x: &'a Foo + 'a, // error! y: &'a mut Foo + 'a, // error! z: fn() -> Foo + 'a, // error! } ``` In types, the `+` type operator has low precedence, so it is often necessary to use parentheses: ``` trait Foo {} struct Bar<'a> { x: &'a (Foo + 'a), // ok! y: &'a mut (Foo + 'a), // ok! z: fn() -> (Foo + 'a), // ok! } ``` More details can be found in [RFC 438]. [RFC 438]: https://github.com/rust-lang/rfcs/pull/438