If the functions are templated you have a harder time making the choice. Should T be accepted by value or by const reference, when you don't know how big or expensive to copy T is?
In this case I would prefer passing by const reference. If the size of T is less than or equal to the size of a reference, it's possible for the compiler to perform an optimisation: it simply passes the parameter by value anyway, because a const reference parameter promises not to modify the parameter, so the side effects are the same. However, the compiler may also choose not to perform this optimisation, especially if it has trouble working out if there are any const_casts involved and such.
But for that reason, I would side with passing by const reference - it's possible, but not certain, that a clever compiler can choose the correct pass method for you, depending on the size of the type and the architecture.