Thread overview | |||||
---|---|---|---|---|---|
|
December 02, 2020 IsTuple returns true for Nullable!SomeTuple | ||||
---|---|---|---|---|
| ||||
This seems like very surprising behavior to me. Is it a bug? import std.typecons; alias NT = Nullable!(Tuple!(int, double)); pragma(msg, isTuple!NT); //prints true! |
December 02, 2020 Re: IsTuple returns true for Nullable!SomeTuple | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ben Jones | On Wednesday, 2 December 2020 at 05:25:09 UTC, Ben Jones wrote: > This seems like very surprising behavior to me. Is it a bug? > > import std.typecons; > alias NT = Nullable!(Tuple!(int, double)); > pragma(msg, isTuple!NT); //prints true! No, this is not a bug, because Nullable!T currently has an implicit conversion to T via `alias this`. [1] However, this implicit conversion is deprecated, and will be removed in a future release. Once that happens, `isTuple!NT` will be `false`, as you'd expect. [1] http://phobos.dpldocs.info/std.typecons.Nullable.1.html#alias-this |
December 02, 2020 Re: IsTuple returns true for Nullable!SomeTuple | ||||
---|---|---|---|---|
| ||||
Posted in reply to Paul Backus | On Wednesday, 2 December 2020 at 12:59:52 UTC, Paul Backus wrote: > No, this is not a bug, because Nullable!T currently has an implicit conversion to T via `alias this`. [1] However, this implicit conversion is deprecated, and will be removed in a future release. Once that happens, `isTuple!NT` will be `false`, as you'd expect. > > [1] http://phobos.dpldocs.info/std.typecons.Nullable.1.html#alias-this I guess it's a moot point because the implicit conversion is deprecated, but it seems strange to me that isTuple behaves like canBeUsedAsTuple. Seems like the reasonable thing to do with a Nullable!(Tuple!Whatever) would be to check isTuple!(TemplateArgsOf!MyNullable) Thanks for the response |
Copyright © 1999-2021 by the D Language Foundation