Thread overview | |||||
---|---|---|---|---|---|
|
February 10, 2018 typedef behavior with @disable this() | ||||
---|---|---|---|---|
| ||||
Do I overlook something? /// --- code --- /// import std.typecons; void main(){} static assert(!__traits( compiles, E())); static assert(!__traits( compiles, MyE())); // line 6 struct E { size_t dummy; @disable this(); this(size_t val) { dummy = val; } } alias MyE = Typedef!E; /// --- code ends --- /// While line 5 does not compile as expected, due to disabled default constructor, the Typedef'd type does. Why? |
February 11, 2018 Re: typedef behavior with @disable this() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Alex | On Saturday, 10 February 2018 at 13:18:28 UTC, Alex wrote: > Do I overlook something? > > /// --- code --- /// > > import std.typecons; > > void main(){} > > static assert(!__traits( compiles, E())); > static assert(!__traits( compiles, MyE())); // line 6 > > struct E > { > size_t dummy; > @disable this(); > this(size_t val) { dummy = val; } > } > > alias MyE = Typedef!E; > > /// --- code ends --- /// > > While line 5 does not compile as expected, due to disabled default constructor, the Typedef'd type does. Why? Typedef explicitly initializes the wrapped value to T.init, thus circumventing the disabled default constructor. Filed a bug: https://issues.dlang.org/show_bug.cgi?id=18415 -- Simen |
February 11, 2018 Re: typedef behavior with @disable this() | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen Kjærås | On Sunday, 11 February 2018 at 00:54:07 UTC, Simen Kjærås wrote:
>
> Typedef explicitly initializes the wrapped value to T.init, thus circumventing the disabled default constructor. Filed a bug:
>
> https://issues.dlang.org/show_bug.cgi?id=18415
>
> --
> Simen
Thanks!
|
Copyright © 1999-2021 by the D Language Foundation