[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
I think you may have missed the thrust of my critique of Eliot's proposal.
It sarted out like this:
Isn't it the case that *any* proclaim about a function is equivalent to
saying that that aspect of the function is "constant"?
Basically, a compiler can't make *any* assumptions at all about a function
it is compiling a call to without assuming "constant-function" also. This
is as true of FTYPE and INLINE declarations as it would be for the more
limiting items you mention like number of required arguments, etc.
Similarly, an INLINE declaration must already imply "constant function";
but my critique claims that a general "constant function" declaration must
not by itself imply INLINE.
Of course, it should be ok to redefine a "constant function" providing the
particular assumptions made during compilation aren't changed. That leaves
very little you can do to a function that has been inline'd.
re: That's already not true of the VALUES declaration. It specifies an
attribute of the function being defined, just as Eliot was suggesting
CLtL, p162 speaks of the VALUES declaration; it says nothing at all like
that. Would you like to try again to say what you meant? Remember also
that Eliot was suggesting that a such a declare be equivalent to a proclaim
(which modifies a global database) and that would give it indefinite scope;
but every other declare is lexically scoped.