I am writing a small matrix library in C++ for matrix operations. However my compiler complains, where before it did not. This code was left on a shelf for 6 months and in between I upgraded my computer from debian etch to lenny (g++ (Debian 4.3.2-1.1) 4.3.2
) however I have the same problem on a Ubuntu system with the same g++.

Here is the relevant part of my matrix class:

```
namespace Math
{
    class Matrix
    {
    public:

        [...]

        friend std::ostream& operator<< (std::ostream& stream, const Matrix& matrix);
    }
}

```

And the "implementation":

```
using namespace Math;

std::ostream& Matrix::operator <<(std::ostream& stream, const Matrix& matrix) {

    [...]

}

```

This is the error given by the compiler:

> 
> matrix.cpp:459: error: 'std::ostream&
>  Math::Matrix::operator<<(std::ostream&,
>  const Math::Matrix&)' must take
>  exactly one argument
> 
> 
> 

I'm a bit confused by this error, but then again my C++ has gotten a bit rusty after doing lots of Java those 6 months. :-)