Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
August 27, 2013 why no to!bool(0) or to!bool(1) ? | ||||
---|---|---|---|---|
| ||||
Is there any reason why the following code fails to compile? --- auto bfalse = to!bool(0); auto btrue = to!bool(1); --- dmd2/src/phobos/std/conv.d(329): Error: template std.conv.toImpl cannot deduce template function from argument types !(bool)(int) I can use a string, like so: --- auto bfalse = to!bool("false"); auto btrue = to!bool("true"); --- ...but usually the database column is an INTEGER type. I can cast(bool)(0) or cast(bool)(1) no problem but I much prefer to!bool. Thanks, G. |
August 27, 2013 Re: why no to!bool(0) or to!bool(1) ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to growler | On Tuesday, 27 August 2013 at 04:08:47 UTC, growler wrote:
> Is there any reason why the following code fails to compile?
>
> ---
> auto bfalse = to!bool(0);
> auto btrue = to!bool(1);
> ---
> dmd2/src/phobos/std/conv.d(329): Error: template std.conv.toImpl
> cannot deduce template function from argument types !(bool)(int)
No one implemented probably. BTW:
void main() {
bool a = 0;
bool b = 1;
assert(!a);
assert(b);
}
|
August 27, 2013 Re: why no to!bool(0) or to!bool(1) ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jesse Phillips | On Tue, Aug 27, 2013 at 07:12:56AM +0200, Jesse Phillips wrote: > On Tuesday, 27 August 2013 at 04:08:47 UTC, growler wrote: > >Is there any reason why the following code fails to compile? > > > >--- > >auto bfalse = to!bool(0); > >auto btrue = to!bool(1); > >--- > >dmd2/src/phobos/std/conv.d(329): Error: template std.conv.toImpl > >cannot deduce template function from argument types !(bool)(int) > > No one implemented probably. BTW: > > void main() { > bool a = 0; > bool b = 1; > > assert(!a); > assert(b); > } Hmm. Maybe file an enhancement request here: http://d.puremagic.com/issues T -- "I'm not childish; I'm just in touch with the child within!" - RL |
August 27, 2013 Re: why no to!bool(0) or to!bool(1) ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jesse Phillips | On Tuesday, 27 August 2013 at 05:13:01 UTC, Jesse Phillips wrote: > On Tuesday, 27 August 2013 at 04:08:47 UTC, growler wrote: >> Is there any reason why the following code fails to compile? >> >> --- >> auto bfalse = to!bool(0); >> auto btrue = to!bool(1); >> --- >> dmd2/src/phobos/std/conv.d(329): Error: template std.conv.toImpl >> cannot deduce template function from argument types !(bool)(int) > > No one implemented probably. BTW: No worries, thanks for the info. > > void main() { > bool a = 0; > bool b = 1; > > assert(!a); > assert(b); > } The implicit conversion is only for literals and besides, I have this sort of hackiness happening: alias typeof(s.tueplof[ii]) FieldType; s.tupleof[ii] = value.to!FieldType; I just stick in a static-if(isBoolean!FieldType) and all is well. Thanks, G |
August 27, 2013 Re: why no to!bool(0) or to!bool(1) ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to H. S. Teoh | On Tuesday, 27 August 2013 at 05:22:00 UTC, H. S. Teoh wrote: > On Tue, Aug 27, 2013 at 07:12:56AM +0200, Jesse Phillips wrote: >> On Tuesday, 27 August 2013 at 04:08:47 UTC, growler wrote: >> >Is there any reason why the following code fails to compile? >> > >> >--- >> >auto bfalse = to!bool(0); >> >auto btrue = to!bool(1); >> >--- >> >dmd2/src/phobos/std/conv.d(329): Error: template std.conv.toImpl >> >cannot deduce template function from argument types !(bool)(int) >> >> No one implemented probably. BTW: >> >> void main() { >> bool a = 0; >> bool b = 1; >> >> assert(!a); >> assert(b); >> } > > Hmm. Maybe file an enhancement request here: > > http://d.puremagic.com/issues > > > T Done. http://d.puremagic.com/issues/show_bug.cgi?id=10909 Thanks, G. |
Copyright © 1999-2021 by the D Language Foundation