In an ABI with callee-cleanup, the following causes implementation hardship because the order of construction of the parameters for the two overloaded operators is required to be different, causing conflicting requirements on the order of parameter destruction.
void operator<<(A, B);
void operator+=(A, B);
void (*p)(A, B) = cond ? &operator<< : &operator+=;
See CWG2751 for details.
In an ABI with callee-cleanup, the following causes implementation hardship because the order of construction of the parameters for the two overloaded operators is required to be different, causing conflicting requirements on the order of parameter destruction.
See CWG2751 for details.