I've been reviewing the C++ standard 03 version. And I'm beginning to get confused with the meanings of the words Should and Shall.
Shall in the standard seems to indicate a compulsory requirement (will-have), where as Should in the standard seems to indicate an optional requirement (could-have). In English, Should implies an expectation, have I misunderstood the meaning? shouldn't Could be used instead?
From ISO TR 10176, Information technology – Guidelines for the preparation of programming language standards:
3.7 Auxiliary verbs used in this text
3.7.1 shall:
An indication of a requirement on programming language standard or processors.
3.7.2 should:
An indication of a recommendation to programming language standard or processors.
3.7.3 may:
An indication of an optional feature of programming language standard or processors. When this Technical Report provides a recommendation to the programming language standard that supports a specific optional feature, the auxiliary verb “may” is used in the sentence explaining the condition.
This is from the 2002 revision, the current revision is 2003, but I assume it hasn't changed much. (The current revision appears to be available for 150 euros, a bit steep. I found the 2002 revision here: http://std.dkuug.dk/jtc1/sc22/wg20/docs/n970-tr10176-2002.pdf.)