Ma tâche consiste à implémenter ma propre fonction std :: ref. Je sais qu'il existe un foncteur reference_wrapper, qui aide à std :: ref. Mais comment pourrais-je implémenter ces fonctions/classes. Je pense à ce qui suit:Comment fonctionne C++ 11 std :: ref?
template <class T>
struct myreference_wrapper{
T& functor;
myreference_wrapper(T& t):functor(t){}
void operator()('parameter') {
functor('parameter');
};
};
template<class T>
myreference_wrapper<T> myref(T& t){
myreference_wrapper<T> functor(t);
return functor;
}
Quand nous appelons myref, nous ne pouvons pas utiliser les paramètres du modèle, car std :: ref ne pas utiliser les paramètres du modèle. Mais quand nous appelons operator(), nous devons connaître ses paramètres, car nous voulons les transmettre à l'opérateur du foncteur() (je l'ai signé avec 'parameter'). Comment std :: ref le fait sans aucun paramètre de template?
Vous pourriez essayer de spécialiser 'myreference_wrapper' pour les types' Callable'. – Holt
Depuis quand 'std :: ref' n'utilise-t-il pas les paramètres du template? – InternetAussie
Pourquoi voulez-vous réinventer la roue et ne pas utiliser 'std :: ref'? – zett42