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.