Should a C++ (implicit or explicit) value constructor accept its parameter(s) by value or reference-to-const, when it needs to store a copy of the argument(s) in its object
Stylistically, I'd say that passing by reference is the better way.
If the performance really matters, then don't guess. Measure it.