Can const be inferred from invariant?

David B. Held dheld at codelogicconsulting.com
Sat Mar 24 10:17:40 PDT 2007


There was some discussion on whether const and invariant needed to be 
two separate keywords.  I believe that they do.  The reason is that they 
express different guarantees, and thus give the programmer the 
opportunity to demand the stronger or weaker guarantee. To wit:

void threadTask(const T* work)
{
    ...
}

void threadTask(invariant T* work)
{
    ...
}

In the first example, the thread doesn't need to lock access to work 
unless it needs a consistent read of different parts of work.  In the 
second example, access to work never needs to be locked.

If you took away one of the keywords and let the proper case be 
inferred, I would never be able to claim one of the guarantees and make 
the distinction between these two functions (which, for performance 
reasons, could be significant).

Dave



More information about the Digitalmars-d mailing list