@L B
The information is correct, but
grouping (shown in the table you reference) and
evaluation order (what the question is about) are completely different things.
Grouping (and operator precedence) is a parsing rule. It says that
x=b++ + ++b + b++
is
parsed as if it was
x = ( ( (b++) + (++b) ) + (b++) )
. It says nothing about evaluation order.
The C++ (and C) compiler has no restrictions (except when && and friends are used) on the order of evaluation of subexpressions as long as their results are collected and ready when the function/operator call is made. They can be left to right, right to left, interleaved, and can change expression to expression, let alone compiler to compiler. There is no telling, when evaluating each of these three 'b's, how many increments have already taken place.
As a practical demo, original program (with syntax errors fixed) in different compilers produces
gcc 4.6.2 linux: 18 25 36 14
gcc 3.4.6 sparc: 17 19 24 9
clang 3.0 linux: 19 28 37 14
intel c 11.1 linux: 18 27 36 14
Sun C++ 5.8 sparc: 20 28 39 14
Sun C 5.8 sparc: 18 27 36 14