www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Tail-constness of class parameters

reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
In a graph library I'm working on I have the following algorithm

bool hasContext(Node sub,    // TODO in
                 Node sup) nothrow // TODO in
{
     Node curr = sub;
     while (true)
     {
         Node ctx = curr.context;
         if (!ctx) { break;}
         if (ctx is sup)
             return true;
         else
             curr = ctx;
     }
     return false;
}

When I qualify the parameters `sub`, `sup` and `curr` with const, 
the assignment

     curr = ctx;

fails.

1. Is there a way to express tail-constness on the parameters 
without having to qualify this function with  trusted to enable 
an ugly const-cast to allow the assignment `curr = ctx` to 
compile?

2. An alternative solution is to make the function recursive. But 
will that be as efficient?
Dec 25 2017
parent reply ag0aep6g <anonymous example.com> writes:
On Monday, 25 December 2017 at 14:49:11 UTC, Nordlöw wrote:
 1. Is there a way to express tail-constness on the parameters
https://dlang.org/phobos/std_typecons.html#Rebindable
Dec 25 2017
parent =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Monday, 25 December 2017 at 15:16:55 UTC, ag0aep6g wrote:
 https://dlang.org/phobos/std_typecons.html#Rebindable
Thanks.
Dec 25 2017