我今天的问题很简单: 为什么编译器不能从类构造函数中推断出模板参数呢?例如,为什么下面的代码无效:
template <typename obj>
class Variable {
obj data;
public:
Variable(obj d) { data = d; }
};
int main() {
int num = 2;
Variable var(num); // would be equivalent to Variable<int> var(num),
return 0; // but actually a compile error
}
正如我所说,我明白这是无效的,所以我的问题是 为什么,不是吗?允许这样做会造成任何重大的语法漏洞吗?有没有一个实例不需要这个功能(推断类型会导致问题) ?我只是试图理解允许函数进行模板推理背后的逻辑,而不是为构造合适的类进行模板推理。