digitalmars.D.learn - typedef behavior with disable this()
- Alex (16/16) Feb 10 2018 Do I overlook something?
- Simen =?UTF-8?B?S2rDpnLDpXM=?= (6/22) Feb 10 2018 Typedef explicitly initializes the wrapped value to T.init, thus
- Alex (2/8) Feb 10 2018 Thanks!
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?
Feb 10 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
Feb 10 2018
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 -- SimenThanks!
Feb 10 2018








Alex <sascha.orlov gmail.com>