我今天的问题很简单:为什么编译器无法像从函数参数中那样从类构造函数中推断模板参数?例如,为什么以下代码无效:
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
}
正如我所说,我知道这是无效的,所以我的问题是为什么呢?允许这样做会造成任何重大的语法漏洞吗?是否存在一个实例,该实例不希望使用此功能(推断类型会导致问题)?我只是想了解允许对函数进行模板推断的逻辑,而对于适当构造的类则不是。
阿波罗的战车
相关分类