Il est mentionné here et there qu'il est parfois préférable de passer par valeur au lieu de passer par référence. À la lumière de cela, est-il possible de sélectionner certains types à transmettre en fonction des modèles variés d'acheminement parfaits?Gabarit variadé d'acheminement parfait avec valeur de passage pour les types sélectionnés
template<typename... Args>
void foo(Args&&...); // passes everything by reference
template<typename... Args>
void foo(Args...); // passes everything by value
template<typename... Args>
void foo(std::conditional_t<is_selected_v<Args>, Args, Args&&>...); // won't deduce types
template<typename... Args>
void foo(...); // this is wrong :)
Remarque ne pas être en mesure de déduire les types signifie qu'il ne fonctionnera pas pour les constructeurs
uhm, je dirais que les fonctions de transfert parfaites sont presque toujours utilisées lorsque inline est possible/probable, ce qui rend le besoin de passer par valeur fa r moins évident ... –
Souhaitez-vous passer tous les arguments par valeur si certaines conditions sont remplies, ou voulez-vous en transmettre une par valeur et une autre par référence? Ce dernier ne semble pas possible ... – Knoep
@Knoep Ce dernier. Je ne peux pas penser à tout ce qui peut faire cela, d'où la question –