Я пишу бібліотеку лінійної алгебри (короткий розповідь, це шкільне завдання), яка включає матриці, вектори тощо. У процесі створення цієї бібліотеки я збираюся створювати функції, які виконують математичні операції на об'єктах. Наприклад, перенести матрицю, інвертувати матрицю, нормалізувати вектор тощо.
Мені було цікаво, що є "найкращою практикою" для такого роду функцій ... Тобто, чи варто робити цю функцію членом чи не членом? (Для наочності / використання бібліотеки)
Приклад:
//Member function way:
B = A.transpose();
C = A.inverse();
//Non-member function way:
B = linalg::transpose(A); //Non-member transpose function in linear algebra namespace
C = linalg::inverse(A);
Чи існує якийсь стандарт щодо таких операцій? Або, принаймні, є загальний спосіб, як це роблять люди? Я схиляюся до першого варіанту, але хотів би знати, чи рекомендується це.