typedef behavior with @disable this()
Simen Kjærås
simen.kjaras at gmail.com
Sun Feb 11 00:54:07 UTC 2018
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
More information about the Digitalmars-d-learn
mailing list