From: Kevlin Henney (Kevlin.Henney_at_[hidden])
Date: 2000-01-12 16:42:46


Dave Abrahams writes:
>> Kevlin Henney writes:
>> >
>> > "r.m is defined if t.m is well defined, where t is an instance of the
the
>> > value type and r is an instance of the reference type"
>>
>> Yes, that's an accurate wording.
>
>Actually, it doesn't work for member functions, since you can't legally
just
>name one like that. How about "&r.m is defined if &t.m is defined..."

A misunderstanding perhaps? This works fine, regardless of whether or not m
represents a data member, eg m <=> foo, or a member function, eg m <=>
bar().

This is the same basic syntax that the standard uses for iterators, and
unless someone wants to file a DR I reckon it's good enough!

>I still wonder if this requirement is really neccessary, though. It isn't
>clear to me that all proxies must reflect all functionality of the object
>they are proxying in order to be valid or useful.

Hmm, what would be an alternative requirement? If there is no requirement,
a reference type can be totally unrelated to the value type -- pretty much
anything except void! So it seems a requirement is required to make the
spec valid and useful.

The current wording is probably a reasonable starting point. Working
through specific examples of counter cases could help establish some new
wording. Anyone any specific example in mind?

Kevlin