Logical const
Andrej Mitrovic
andrej.mitrovich at gmail.com
Mon Nov 29 18:19:04 PST 2010
On 11/30/10, Simen kjaeraas <simen.kjaras at gmail.com> wrote:
> Simen kjaeraas <simen.kjaras at gmail.com> wrote:
>
>> It works in many cases, but not for function calls
>
> Some more testing brought this bug to my attention:
>
> void bar( ref int n ) {
> n++;
> }
>
> void main( string[] args ) {
> const int n = args.length * 0;
> assert( is( typeof( n ) == const(int) ) );
> bar( n ); // Uhm...
> assert( n == 1 ); // WTF?!?
> }
>
>
> I would say this is seriously bad.
> http://d.puremagic.com/issues/show_bug.cgi?id=5291
>
>
> --
> Simen
>
It seems this is a problem with ref. If you use "in" the compiler gets
some of its senses back:
void bar( in int n )
{
n++;
}
void main( string[] args )
{
const int n = args.length * 0;
assert( is( typeof( n ) == const(int) ) );
bar( n ); // compile error
assert( n == 1 );
}
More information about the Digitalmars-d
mailing list