
I have not yet see the implementation and the tests (I will do it this evening), but in my opinion the logic of the 37 operators the library defines already is limited to binary operators, prefix unary operators and postfix unary operators. That mean that there are only 3 implementations to maintain, and the use of macros should do the rest.
The same should apply for the tests. Write tests for the 3 kind of operators and use macros to test all the operators.
Yes and no. Yes: the implementation uses only three different headers BUT some operations are forbidden by the standard. For example you cannot write: double x, y; x%y; This leads to compile time error. And every operator has its own rule of what is forbidden and what is not. Another example: assignement operators must have LHS be non const! I handle that with macros in the implementation FORBIDDEN_IF but in the tests, specific tests must be provided to ensure these specific behavior have been taken into account.
I really would like to see the complete list of operators provided by the library, at least be as good as operators traits of Boost.ConceptsTraits/Operators is.
I know... later maybe somebody can add the missing traits. Frédéric