Eclipse indexer did not handle the ->* operator correctly and display
error in the editor, whereas it actually is not a bug. Changing the
operator from operator->* to operator+ can resolve this problem.
Proof of concept:
Prority 3 operator+ Right-to-left
Prority 4 operator->* Left-to-right
where:
__catchResult+expr
Supported operator in expr:
Prority 3 +
Prority 3 -
Prority 3 /
Prority 3 *
Prority 13 &&
*STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison
Prority 14 ||
*STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison
__catchResult + _1Obj operand1 _2Obj .... _NObj
=> (__catchResult + _1Obj) operand1 _2Obj .... _NObj
=> ExpressionLhs<T> operand1 _2Obj .... _NObj
Hence, the change is OK
- moved as much logic out of the macros as possible
- moved most logic into new ResultBuilder class, which wraps ExpressionResultBuilder (may take it over next), subsumes ResultAction and also takes place of ExpressionDecomposer.
This introduces many SRP violations - but all in the name of minimising macro logic!