Quote Originally Posted by kempofighter
Actually i don't think that this is necessary since the
// function uses Matrix's public interface but this is the pattern I see
// when studying existing code. I guess that this is done so that the
// function definition can directly access private/protected members.
That is a good observation. The rule of thumb is to prefer non-member non-friend functions: GotW #84: Monoliths "Unstrung".