Si je comprends bien, il existe des fonctions spéciales qui se propagent à tous les membres du champ par défaut. : -
affectation de copie, constructeur de copie, affectation de mouvement, déplacer constructeur, destructor, etc.émule une fonction qui se propage dans tous les champs comme opérateur = et destructeur
class B{};
class C{B b;};
C c1; C c2;
c1=c2; //<-- automatic invoke B::operator=()
Est-il possible de déployer une astuce C++ pour créer/émuler une fonction personnalisée qui a une telle fonctionnalité cool?
Si non, c'est une réponse complète.
Si oui, veuillez montrer la démo; Je crois que ce devrait être une fonction gratuite, par ex. : -
class A{};
class B{};
void f(A a){}
class C{public: A a;B b;};
//no need to code "void f(C c){f(c.a);}"
C c1;
f(c1); //<-- automatic invoke f(c1.a), but not invoke f(c1.b)
fonction modèle et SFINAE pourrait être utile, mais je ne sais pas comment appliquer dans ce cas. Je pense que cela peut être utile pour un peu plus d'avance RAII.