Closed
Description
Given the following code (playground):
#![feature(rustc_attrs)]
#![feature(min_specialization)]
#![feature(const_trait_impl)]
#[rustc_specialization_trait]
trait Specialize {}
trait Foo {}
impl<T> const Foo for T {}
impl<T> const Foo for T
where
T: ~const Specialize
{}
The following error is produced:
error: cannot specialize on `Binder(~const TraitPredicate(<T as Specialize>, polarity:Positive), [])`
--> src/main.rs:12:1
|
12 | / impl<T> const Foo for T
13 | | where
14 | | T: ~const Specialize
15 | | {}
| |__^
What I expect is that the compilation succeeds, as it does without the const trait impl and corresponding ~const
trait bound (playground):
#![feature(rustc_attrs)]
#![feature(min_specialization)]
#[rustc_specialization_trait]
trait Specialize {}
trait Foo {}
impl<T> Foo for T {}
impl<T> Foo for T
where
T: Specialize
{}
@rustbot label +F-const_trait_impl +F-specialization +A-specialization +A-traits