Trying to understand sample from [wikipedia](http://en.wikipedia.org/wiki/Template_metaprogramming)

```
template <int length>
Vector<length>& Vector<length>::operator+=(const Vector<length>& rhs) 
{
    for (int i = 0; i < length; ++i)
        value[i] += rhs.value[i];
    return *this;
}

template <>
Vector<2>& Vector<2>::operator+=(const Vector<2>& rhs) 
{
    value[0] += rhs.value[0];
    value[1] += rhs.value[1];
    return *this;
}

```

Firsttly I can't compile it at all. I got error syntax error : `missing ';' before '<'` 

And second question is how to use it?
As far as I understand template name `Vector` is not the same like `std::vector`.