error[E0283]: type annotations needed --> $DIR/auto-trait-selection-freeze.rs:19:16 | LL | if false { is_trait(foo()) } else { Default::default() } | ^^^^^^^^ ----- type must be known at this point | | | cannot infer type of the type parameter `T` declared on the function `is_trait` | = note: cannot satisfy `_: Trait<_>` note: required by a bound in `is_trait` --> $DIR/auto-trait-selection-freeze.rs:11:16 | LL | fn is_trait, U: Default>(_: T) -> U { | ^^^^^^^^ required by this bound in `is_trait` help: consider specifying the generic arguments | LL | if false { is_trait::(foo()) } else { Default::default() } | ++++++++ error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0283`.