Либо а) совсем нет, просто положитесь на компилятор по умолчанию; или б) просто вызвав конструктор копирования члена:
template <typename T> struct Foo
{
T var;
Foo(const Foo & rhs) : var(rhs.var) { }
};
Дело, конечно, в том, что предоставленный компилятором конструктор копирования по умолчанию делает точно то же самое: он вызывает конструктор копирования каждого члена по одному. Поэтому для класса, состоящего из умных объектов-членов, конструктор копирования по умолчанию должен быть наилучшим из возможных.