Déclarer un membre non-copyable
Bonjour,
J’ai une classe (non copiable). Dedans cette classe, il y a un gros tableau, qui est un std::vector. Je voudrais m’assurer que ce vecteur n’est pas copié implicitement (par erreur, soit parce qu’on le passe en paramètre de fonction par copie et pas par ref).
J’aimerai donc faire un truc du genre :
Code:
1 2 3 4 5 6 7 8 9 10
|
class A
{
private:
noncopyable std::vector<Data> m_data;
public:
noncopyable std::vector<Data>& data() { return m_data; }
} |
Y a-t-il une solution standard à ce problème ?
Je suis parfaitement conscient que si on veut copier le vecteur, on le copiera. L’idée est plutôt ici de détecter à la compilation une copie accidentelle (operator=, passage de paramètre…), qui me plomberait mes perfs. La copie explicite étant toujours possible via itération sur le vecteur.