Si j'ai une classeC++ auto_ptr et copier la construction
template <typename T>
struct C {
...
private:
auto_ptr<T> ptr;
};
Comment définir le constructeur de copie C:
Il ne peut pas être
template <typename T>
C<T>::C(const C& other)
parce que je veux si je copier le auto_ptr de l'autre, j'ai changé d'autre en supprimant la propriété. Est-il légal de définir un constructeur de copie comme
template <typename T>
C<T>::C(C& other) {}
S'il veut transférer, il n'a pas besoin de faire quoi que ce soit. Le compilateur fournit le constructeur correct de copie automatiquement dans ce cas - bien que je recommanderais contre cela aussi. –
Intéressant. J'étais sûr que vous aviez tort mais il semble que le compilateur créera alors automatiquement un constructeur non-const pour C. Je vais devoir examiner les règles qui permettent cela. Quoi qu'il en soit, je continue de suivre mon conseil d'utiliser quelque chose de plus évident. –