non-member function cannot have cv-qualifier
The const
modifier at the end of the function declaration applies to the hidden this
parameter for member functions.
As this is a free function, there is no this
and that modifier is not needed.
The t
parameter already has its own const
in the parameter list.
The cv-qualifier on a member function specifies that the this
pointer is to have indirected type const
(or volatile
, const volatile
) and that therefore the member function can be called on instances with that qualification.
Free functions (and class static functions) don't have a this
pointer.
As we all know, const
keyword followed after the argument list indicates that this is a pointer to a pointer constant.
There is a non-member function, it does not belong to the class, so add const opposite end error occurs.
Solution to the problem: is to either become a class member function or remove the const
keyword const opposite end
Your desire not to modify t
is expressed in const T& t
. The ending const
specifies that you will not modify any member variable of the class abs
belongs to.
Since there is no class where this function belongs to, you get an error.