Properties: a.b.c = 3

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Jul 29 12:14:04 PDT 2009


Steven Schveighoffer wrote:
> On Wed, 29 Jul 2009 14:08:18 -0400, Andrei Alexandrescu 
> <SeeWebsiteForEmail at erdani.org> wrote:
> 
>> Steven Schveighoffer wrote:
>>> It would be nice if the compiler could help by simply rejecting what 
>>> it can reject (assignment to rvalues), but other than that, there's 
>>> not much that can be done.
>>>  This can be detected in simple cases, but in the case where the end 
>>> point is a function, it will be difficult or impossible.
>>
>> I think it is eminently possible, but we must figure a solution that 
>> doesn't complicate the language all too much.
> 
> Here is a struct, defined in a .di file:
> 
> struct S
> {
>   private int _c;
>   int c();
>   void c(int n);
> }
> 
> struct S2
> {
>   S b();
> }
> 
> Now, in your main file you have:
> 
> void main()
> {
>   S2 a;
>   a.b.c = 3;
> }
> 
> How in the world is the compiler supposed to know whether to allow this 
> or not?

By making a conservative decision.

Andrei



More information about the Digitalmars-d mailing list