Quand un compilateur peut déduire un paramètre de modèle?

Parfois cela fonctionne, parfois pas:

template <class T> 
void f(T t) {}

template <class T>
class MyClass {
public:
  MyClass(T t) {}
};

void test () {
  f<int>(5);
  MyClass<int> mc(5);
  f(5);
  MyClass mc(5); //this doesn't work
}

Est-il un moyen de pirater autour de l'exemple ci-dessus? I. e. forcer le compilateur à déduire le paramètre de modèle de paramètre du constructeur.

Ce que ce sera corrigé dans le futur, ou est-il une bonne raison de ne pas?

Ce qui est la règle générale, lorsque le compilateur peut déduire paramètre de modèle?

InformationsquelleAutor | 2009-04-28