Thread overview | ||||||
---|---|---|---|---|---|---|
|
November 26, 2011 Strong size_t | ||||
---|---|---|---|---|
| ||||
Tried to create a stronger version of size_t which will not interoperate with int and long http://codepad.org/47OB3nJi But for some reason can't compare struct to int using opEquals and opCmp. How to fix it? And should it? One can write `v==intp(42)` or `v<intp(43)`. |
November 26, 2011 Re: Strong size_t | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kagamin | On Sat, 26 Nov 2011 17:22:58 +0100, Kagamin <spam@here.lot> wrote:
> Tried to create a stronger version of size_t which will not interoperate with int and long
> http://codepad.org/47OB3nJi
>
> But for some reason can't compare struct to int using opEquals and opCmp. How to fix it? And should it? One can write `v==intp(42)` or `v<intp(43)`.
Have you tried to overload opEquals and opCmp for ints? That seems to
work just fine for me:
bool opEquals(int v) const { return value == v; }
int opCmp(int v) const
{
return value>v?1:value<v?-1:0;
}
Just add those to the intp struct.
|
November 26, 2011 Re: Strong size_t | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen Kjærås | Simen KjærÃ¥s Wrote:
> On Sat, 26 Nov 2011 17:22:58 +0100, Kagamin <spam@here.lot> wrote:
>
> > Tried to create a stronger version of size_t which will not interoperate
> > with int and long
> > http://codepad.org/47OB3nJi
> >
> > But for some reason can't compare struct to int using opEquals and opCmp. How to fix it? And should it? One can write `v==intp(42)` or `v<intp(43)`.
>
> Have you tried to overload opEquals and opCmp for ints? That seems to work just fine for me:
>
> bool opEquals(int v) const { return value == v; }
> int opCmp(int v) const
> {
> return value>v?1:value<v?-1:0;
> }
>
> Just add those to the intp struct.
It writes
Error: function strongintp.intp.opEquals type signature should be const bool(ref const(intp)) not const bool(ref const const(short) v)
Hmm... may be my compiler version is old and this was fixed...
|
November 26, 2011 Re: Strong size_t | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kagamin | On Sat, 26 Nov 2011 11:45:26 -0500, Kagamin <spam@here.lot> wrote: > Simen Kjærås Wrote: > >> On Sat, 26 Nov 2011 17:22:58 +0100, Kagamin <spam@here.lot> wrote: >> >> > Tried to create a stronger version of size_t which will not >> interoperate >> > with int and long >> > http://codepad.org/47OB3nJi >> > >> > But for some reason can't compare struct to int using opEquals and >> > opCmp. How to fix it? And should it? One can write `v==intp(42)` or >> > `v<intp(43)`. >> >> Have you tried to overload opEquals and opCmp for ints? That seems to >> work just fine for me: >> >> bool opEquals(int v) const { return value == v; } >> int opCmp(int v) const >> { >> return value>v?1:value<v?-1:0; >> } >> >> Just add those to the intp struct. > > It writes > Error: function strongintp.intp.opEquals type signature should be const bool(ref const(intp)) not const bool(ref const const(short) v) > > Hmm... may be my compiler version is old and this was fixed... According to bugzilla, yes. http://d.puremagic.com/issues/show_bug.cgi?id=3659 -Steve |
Copyright © 1999-2021 by the D Language Foundation