Why do some T.init evaluate to true while others to false?
ArturG via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon May 30 12:06:53 PDT 2016
On Friday, 27 May 2016 at 14:48:59 UTC, Adam D. Ruppe wrote:
> On Friday, 27 May 2016 at 14:43:47 UTC, ArturG wrote:
>>> if(value is typeof(value).init) ...
>>
>> that still requiers a special case for floating points, arrays
>> and optionally empty string literals.
>
> Have you tried? That should work in all cases.
does this count?
struct Foo
{
int x;
float f;
}
void main()
{
Foo foo;
if(foo is typeof(foo).init) "A: does'nt work".writeln;
foo = Foo();
if(foo is typeof(foo).init) "B: works".writeln;
}
if you remove the float from the struct both cases work or if you
define the float inside the struct like this:
struct Foo
{
int x;
// float f = float.init; // does'nt work
float f = float.nan;
}
More information about the Digitalmars-d-learn
mailing list