This is an interesting problem with the ref-is-not-part-of-the-type design. You can't really have a const(ref) in D, and a ref const(int) is kinda backwards logic.
I've never understood why ref isn't part of the type... can someone explain why this is a good thing? It seems to cause all sorts of troublesome problems... auto ref in templates for one.


On 12 April 2013 10:50, Nicholas Smith <nmsmith65@gmail.com> wrote:
I don't know how to file bug reports but I'm sure this shouldn't happen :)
DMD gives an error.

import std.stdio;

void main()
{
        immutable Cat cat = cast(immutable) new Cat(5);
        happyBirthday(cat.age);
        writefln("My 5 year old cat is %s years old!", cat.age);
}

void happyBirthday(ref int i)
{
        i++;
}

class Cat
{
        public int age;

        this(int a)
        {
                this.age = age;
        }
}


Output:
My 5 year old cat is 6 years old!