Aside the fact, that it's highly ambiguous, the programmers would
start forgetting to write that auto :-)

On Fri, Feb 17, 2012 at 4:35 PM, Piotr Szturmaj <bncr...@jadamspam.pl> wrote:
> Jonathan M Davis wrote:
>>
>> On Thursday, February 16, 2012 18:49:40 Walter Bright wrote:
>>>
>>> Given:
>>>
>>>      class A { void foo() { } }
>>>      class B : A { override pure void foo() { } }
>>>
>>> This works great, because B.foo is covariant with A.foo, meaning it can
>>> "tighten", or place more restrictions, on foo. But:
>>>
>>>      class A { pure void foo() { } }
>>>      class B : A { override void foo() { } }
>>>
>>> fails, because B.foo tries to loosen the requirements, and so is not
>>> covariant.
>>>
>>> Where this gets annoying is when the qualifiers on the base class
>>> function
>>> have to be repeated on all its overrides. I ran headlong into this when
>>> experimenting with making the member functions of class Object pure.
>>>
>>> So it occurred to me that an overriding function could *inherit* the
>>> qualifiers from the overridden function. The qualifiers of the overriding
>>> function would be the "tightest" of its explicit qualifiers and its
>>> overridden function qualifiers. It turns out that most functions are
>>> naturally pure, so this greatly eases things and eliminates annoying
>>> typing.
>>>
>>> I want do to this for @safe, pure, nothrow, and even const.
>>>
>>> I think it is semantically sound, as well. The overriding function body
>>> will
>>> be semantically checked against this tightest set of qualifiers.
>>>
>>> What do you think?
>>
>>
>> No. Absolutely not. I hate the fact that C++ does this with virtual. It
>> makes
>> it so that you have to constantly look at the base classes to figure out
>> what's
>> virtual and what isn't. It harms maintenance and code understandability.
>> And
>> now you want to do that with @safe, pure, nothrow, and const? Yuck.
>
>
> What about:
>
>
>       class A { pure void foo() { } }
>       class B : A { auto override void foo() { } }



-- 
Bye,
Gor Gyolchanyan.

Reply via email to