On Thu, 05 Feb 2009 14:27:27 -0500, Bill Baxter <wbax...@gmail.com> wrote:

On Fri, Feb 6, 2009 at 2:34 AM, Robert Jacques <sandf...@jhu.edu> wrote:
On Thu, 05 Feb 2009 06:55:46 -0500, Alex Burton <alex...@mac.com> wrote:
int main()
{
    B b;
    b.a.j = 10;     // error b.a is a temporary.
}

This isn't a bug, it's a feature. What you wanted to use were ref returns
(see http://www.digitalmars.com/d/2.0/function.html )
ref A a() { return mA; }

You could call it a bug that the compiler doesn't warn about the
modification of a temporary like that in a way that has no side
effects.  Or maybe it does warn about it if you enable warnings?

--bb

Actually, from that point of view
b.a.j = 10;     // error b.a is a temporary.
isn't the real ( or I think desired ) warning. The real issue is that b.a.j results in an unused variable which several other compilers issue warnings about and is a much more general issue.

Reply via email to