VS 2013 dit qu'il ne peut pas se spécialiser le modèle de fonction dans le code suivant:VS 2013 ne parvient pas à se spécialiser modèle de fonction de type référence universel et retour en fonction du paramètre de modèle
struct W { };
template <class T>
typename T::result_type
f (const W & w, T && t) {
return 0;
}
/* ... */
struct V { typedef int result_type; };
W w {};
V v {};
f (w, v);
Si je remplace typename T::result_type
par int
ou si Je remplace la référence universelle T&&
par T&
, il ne se plaint pas.
À mon avis, le code ci-dessus est correct. Est-ce un bug de compilateur, ou est-ce que je fais quelque chose de mal?
Merci beaucoup! Je n'aurais jamais pensé à ça moi-même. J'accepterai votre réponse dès que possible. – JohnB