Repro: interface A { } interface B : A { } static assert(is(ImplicitConversionTargets!B == AliasSeq!(A))); Expected: AliasSeq!(A) Got: AliasSeq!() To add, TransitiveBaseTypeTuple (which ImplicitConversionTargets uses) also doesn't support interface parameters.
@FeepingCreature created dlang/phobos pull request #7453 "Fix/issue 20756 implicitconversiontargets interfaces" fixing this issue: - Fix issue 20756: support interfaces in ImplicitConversionTargets https://github.com/dlang/phobos/pull/7453
Changed from 'bug' to 'enhancement' since the behavior of ImplicitConversionTargets is correct for its documentation: ``` If the type is not a built-in value type or a class derived from `Object`, the an empty $(REF AliasSeq,std,meta) is returned. ```
I would argue that then the documentation is another bug. A template called "ImplicitConversionTargets" can be reasonably expected to return implicit conversion targets.
@FeepingCreature created dlang/phobos pull request #8016 "Fix issue 20756: Handle interface argument in `AllImplicitConversionTargets`." fixing this issue: - Fix issue 20756: Handle interface argument in `AllImplicitConversionTargets`. https://github.com/dlang/phobos/pull/8016
dlang/phobos pull request #8016 "Fix issue 20756: Handle interface argument in `AllImplicitConversionTargets`." was merged into master: - 3e619db79c6e4e33c2cf39de213f3a097e3d9951 by Mathis Beer: Fix issue 20756: Handle interface argument in `AllImplicitConversionTargets`. https://github.com/dlang/phobos/pull/8016
ImplicitConversionTargets has been deprecated. AllImplicitConversionTargets supports interface inheritance.