/in/foo.cc: In function 'int main()':
/in/foo.cc:97:14: error: no match for 'operator-' (operand types are 'Matrix3' and 'Matrix3')
M4 = (M1+ M2- M3)*k;
~~~~~~^~~~
/in/foo.cc:47:17: note: candidate: Matrix3 operator-(Matrix3&, Matrix3&) <near match>
friend Matrix3 operator -(Matrix3 &M1, Matrix3 &M2)
^~~~~~~~
/in/foo.cc:47:17: note: conversion of argument 1 would be ill-formed:
/in/foo.cc:97:10: error: invalid initialization of non-const reference of type 'Matrix3&' from an rvalue of type 'Matrix3'
M4 = (M1+ M2- M3)*k;
~~^~~~
In file included from /usr/include/c++/6/bits/stl_algobase.h:67:0,
from /usr/include/c++/6/bits/char_traits.h:39,
from /usr/include/c++/6/ios:40,
from /usr/include/c++/6/ostream:38,
from /usr/include/c++/6/iostream:39,
from /in/foo.cc:1:
/usr/include/c++/6/bits/stl_iterator.h:1193:5: note: candidate: template<class _Iterator> decltype ((__x.base() - __y.base())) std::operator-(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)
operator-(const move_iterator<_Iterator>& __x,
^~~~~~~~
/usr/include/c++/6/bits/stl_iterator.h:1193:5: note: template argument deduction/substitution failed:
/in/foo.cc:97:16: note: 'Matrix3' is not derived from 'const std::move_iterator<_IteratorL>'
M4 = (M1+ M2- M3)*k;
^~
In file included from /usr/include/c++/6/bits/stl_algobase.h:67:0,
from /usr/include/c++/6/bits/char_traits.h:39,
from /usr/include/c++/6/ios:40,
from /usr/include/c++/6/ostream:38,
from /usr/include/c++/6/iostream:39,
from /in/foo.cc:1:
/usr/include/c++/6/bits/stl_iterator.h:1186:5: note: candidate: template<class _IteratorL, class _IteratorR> decltype ((__x.base() - __y.base())) std::operator-(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)
operator-(const move_iterator<_IteratorL>& __x,
^~~~~~~~
/usr/include/c++/6/bits/stl_iterator.h:1186:5: note: template argument deduction/substitution failed:
/in/foo.cc:97:16: note: 'Matrix3' is not derived from 'const std::move_iterator<_IteratorL>'
M4 = (M1+ M2- M3)*k;
^~
In file included from /usr/include/c++/6/bits/stl_algobase.h:67:0,
from /usr/include/c++/6/bits/char_traits.h:39,
from /usr/include/c++/6/ios:40,
from /usr/include/c++/6/ostream:38,
from /usr/include/c++/6/iostream:39,
from /in/foo.cc:1:
/usr/include/c++/6/bits/stl_iterator.h:387:5: note: candidate: template<class _IteratorL, class _IteratorR> decltype ((__y.base() - __x.base())) std::operator-(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)
operator-(const reverse_iterator<_IteratorL>& __x,
^~~~~~~~
/usr/include/c++/6/bits/stl_iterator.h:387:5: note: template argument deduction/substitution failed:
/in/foo.cc:97:16: note: 'Matrix3' is not derived from 'const std::reverse_iterator<_Iterator>'
M4 = (M1+ M2- M3)*k;
^~
In file included from /usr/include/c++/6/bits/stl_algobase.h:67:0,
from /usr/include/c++/6/bits/char_traits.h:39,
from /usr/include/c++/6/ios:40,
from /usr/include/c++/6/ostream:38,
from /usr/include/c++/6/iostream:39,
from /in/foo.cc:1:
/usr/include/c++/6/bits/stl_iterator.h:333:5: note: candidate: template<class _Iterator> decltype ((__x.base() - __y.base())) std::operator-(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)
operator-(const reverse_iterator<_Iterator>& __x,
^~~~~~~~
/usr/include/c++/6/bits/stl_iterator.h:333:5: note: template argument deduction/substitution failed:
/in/foo.cc:97:16: note: 'Matrix3' is not derived from 'const std::reverse_iterator<_Iterator>'
M4 = (M1+ M2- M3)*k;
^~
/in/foo.cc:98:10: error: invalid initialization of non-const reference of type 'Matrix3&' from an rvalue of type 'Matrix3'
M5 = (M1* M2* M3)*k;
~~^~~~
/in/foo.cc:56:17: note: initializing argument 1 of 'Matrix3 operator*(Matrix3&, Matrix3&)'
friend Matrix3 operator *(Matrix3 &M1, Matrix3 &M2)
^~~~~~~~