Иногда работает иногда нет:
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
}
Есть ли способ обойти приведенный выше пример? Т.е. заставить компилятор вывести параметр шаблона из параметра конструктора.
Будет ли это исправлено в будущем или есть веская причина не делать этого?
Каково общее правило, когда компилятор может вывести параметр шаблона?