Skip to content

Simplified syntax, added named parameters and concepts - June 4, 2012

Pre-release
Pre-release
Compare
Choose a tag to compare
@lcaminiti lcaminiti released this 05 Sep 00:18
· 114 commits to master since this release
  1. Simplified syntax by reducing extra parenthesis to the bare necessary minimum (using some of the preprocessor parsing techniques originally introduced by Boost.LocalFunction).
  2. Postcondition old values only copy the old-of expression (e.g., copy just vector size instead of entire vector). This improves performance and introduces the ConstantCopyConstructible requirement just for the old value expression type (e.g., a vector might not be copyable while its size always is because it is an integral type). Removed the copyable tag.
  3. Body defined outside the macros (so compiler-errors for definitions retain their usual meaning).
  4. Added CONTRACT_CLASS macro and removed the need to duplicate declaration elements (do not repeat function declaration, do not repeat class name in function declaration, etc).
  5. Using _TPL macros so to reduce compile-time (instead of internally making all templates contract functions so to use typename freely).
  6. Overloading no longer requires unique parameter names.
  7. Added C++11-like virtual specifiers.
  8. Added constant assertions plus constant-expressions for select assertion if-conditions and for loop variants.
  9. Added named and deduced parameters.
  10. Added concept checking.
  11. Removed the interface to use the library without the macro (programmers were required to write too much boiler-plate code for the non-macro interface to be actually usable, plus supporting both the macro and non-macro interfaces limited what the macros could do).