In the expression f(1) || (!g(2)), and without knowing the return types of f(1) and g(2), you can still assert that f(1) will always be evaluated before g(2) (which may not get evaluated at all).
Answers
Answer:
This is a living document under continuous improvement. Had it been an open-source (code) project, this would have been release 0.8. Copying, use, modification, and creation of derivative works from this project is licensed under an MIT-style license. Contributing to this project requires agreeing to a Contributor License. See the accompanying LICENSE file for details. We make this project available to “friendly users” to use, copy, modify, and derive from, hoping for constructive input.
Comments and suggestions for improvements are most welcome. We plan to modify and extend this document as our understanding improves and the language and the set of available libraries improve. When commenting, please note the introduction that outlines our aims and general approach. The list of contributors is here.
Problems:
The sets of rules have not been completely checked for completeness, consistency, or enforceability.
Triple question marks (???) mark known missing information
Update reference sections; many pre-C++11 sources are too old.
For a more-or-less up-to-date to-do list see: To-do: Unclassified proto-rules