Überschreibt ein Konstruktor mit Vorlagen den Konstruktor für implizite Kopien in C ++?

Überschreibt ein Konstruktor mit Vorlagen (wie der folgende) den Konstruktor für implizite Kopien?

template <class T>
struct Foo
{
    T data;

    // ...

    template <class U>
    Foo(const Foo<U> &other) : data((T)doSomethingWith(other.data)) {}

    // ...
};

Wenn ja, überschreibt es es trotzdem, wennother wird eher nach Wert als nach konstanter Referenz übergeben?

Wenn ja, gibt es eine Möglichkeit, dies zu umgehen, ohne explizit einen Kopierkonstruktor zu definieren?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage