fieldPostBlit - what is wrong with this and workarounds
Daniel Davidson
nospam at spam.com
Thu Oct 31 10:22:06 PDT 2013
On Thursday, 31 October 2013 at 15:56:45 UTC, Maxim Fomin wrote:
> On Thursday, 31 October 2013 at 14:03:28 UTC, Daniel Davidson
> wrote:
>> Given this code:
>>
>> import plus.tvm.rate_curve;
>> struct T {
>> RateCurve m;
>> }
>> struct S {
>> const(T) rc;
>> }
>>
>> I get this error: Error: mutable method
>> plus.models.dossier.__unittestL42_1.T.__fieldPostBlit is not
>> callable using a const object
>>
>> Is this fundamentally incorrect? I abandoned immutable in
>> hopes that const would be more manageable and so far it has.
>> But these types of issues still crop up and stop me in my
>> tracks.
>>
>> What are the requirements on RateCurve and T for this to work?
>>
>> Thanks
>> Dan
>
> D language is fundamentally incorrect here. There are
> sufficient issues in bugzilla (one which bearophile provided is
> actually relevant, it shows same problem from a little bit
> different aspect) and the problem tends to pop up quire
> regularly. It looks like nothing is done because it is design
> issue and although there were attempts to come up with, no idea
> is viewed as final solution. The easiest way to solve problem
> is to strip const.
I'm think you may be correct... but what specifically is
incorrect about the language?
When I see __fieldPostBlit I get the feeling it is more an
implementation issue than the language.
If as you suggest, D language is fundamentally broken - is it
possible we can just get a plan for fixing it? To me this seems
like a huge design hole and I come back to the threads with
questions again and again and I really don't know how others
manage the use of const/immutable.
I've already given up on immutable. If I have to strip const as
well then that is a huge pain and unfortunate since the concept
seems sound and well argued in TDPL. Trying to mess with
mutable/const/immutable on mostly working code is like playing
whack a mole.
More information about the Digitalmars-d-learn
mailing list