This is still undefined behavior (UB) as per expr.compound:
The postfix-expression is sequenced before each expression in the expression-list and any default argument. The initialization of a parameter, including every associated value computation and side effect, is indeterminately sequenced with respect to that of any other parameter.
(emphasis mine)
This means that the postfix expression model->set
is sequenced before the expression estimate(model)
in the expression-list. And since model
is null pointer, the precondition of std::shared_ptr::operator->
is violated and hence this leads to UB.