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