This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
> -5- It is unspecified whether the array form of each virtual > member function calls the single-element virtual overload > of the same function in a loop, or whether the single > element form calls the array form with an array of a single > element with the value of its argument, or whether neither > form calls the other. In any case, an implementation is not > permitted to call the other form of any virtual member > function overridden in a derived class.
There's no way to tell that the virtual member is overridden, is there? This clause seems to say that neither form may call the other, period. I think that's what you have to do to solve the infinite loop, right? If so, how about:
-5- Neither the array nor single-element form of virtual member function may call the other form.
This seems to me too strong and, if I understand well, would rule out Martin's implementation (toward the end):
To achieve the same result (avoid unexpected endless loops) can't we just say in -5- that, if one form is overridden, the other must be (consistently) overridden too or undefined behavior is expected?
Is *this* too strong, in a different way? I don't know, but really, that 12988 is missing the other form is at the root of the whole discussion thread, in my opinion...
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |