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