class Matrix {};
Matrix operator+(const Matrix &a, Matrix &&b ) {}
Matrix operator+(Matrix &&a, const Matrix &b) {}
Matrix operator+(const Matrix &a, const Matrix &b) {}
Matrix operator*(const Matrix &a, Matrix &&b ) {}
Matrix operator*(Matrix &&a, const Matrix &b) {}
Matrix operator*(const Matrix &a, const Matrix &b) {}
int main()
{
Matrix a,b,c,d;
Matrix x = a*b + c*d;
}
Y2xhc3MgTWF0cml4IHt9OwoKTWF0cml4IG9wZXJhdG9yKyhjb25zdCBNYXRyaXggJmEsIE1hdHJpeCAmJmIgICAgICkge30KTWF0cml4IG9wZXJhdG9yKyhNYXRyaXggJiZhLCAgICAgIGNvbnN0IE1hdHJpeCAmYikge30KTWF0cml4IG9wZXJhdG9yKyhjb25zdCBNYXRyaXggJmEsIGNvbnN0IE1hdHJpeCAmYikge30KCk1hdHJpeCBvcGVyYXRvciooY29uc3QgTWF0cml4ICZhLCBNYXRyaXggJiZiICAgICApIHt9Ck1hdHJpeCBvcGVyYXRvciooTWF0cml4ICYmYSwgICAgICBjb25zdCBNYXRyaXggJmIpIHt9Ck1hdHJpeCBvcGVyYXRvciooY29uc3QgTWF0cml4ICZhLCBjb25zdCBNYXRyaXggJmIpIHt9CgoKaW50IG1haW4oKSAKewogIE1hdHJpeCBhLGIsYyxkOwogIE1hdHJpeCB4ID0gYSpiICsgYypkOwp9Cg==
prog.cpp: In function 'int main()':
prog.cpp:15:22: error: ambiguous overload for 'operator+' in 'operator*(((const Matrix&)((const Matrix*)(& a))), ((const Matrix&)((const Matrix*)(& b)))) + operator*(((const Matrix&)((const Matrix*)(& c))), ((const Matrix&)((const Matrix*)(& d))))'
prog.cpp:3:8: note: candidates are: Matrix operator+(const Matrix&, Matrix&&)
prog.cpp:4:8: note: Matrix operator+(Matrix&&, const Matrix&)
prog.cpp:5:8: note: Matrix operator+(const Matrix&, const Matrix&)