几天后,我确实 发现了 C ++的行为,其中模板参数被自动插入,如本例所示(无意义,仅用于表示我的意思) ):
#include <iostream>
template<typename Type> void setVar(Type& subj, const Type& in)
{
subj = static_cast<Type>(in);
}
int main()
{
int foo;
setVar(foo, 42);
std::cout << foo << std::endl;
}
我的问题:
答案 0 :(得分:1)
这种行为叫什么?
模板参数推断。
是否有特殊规则可以自动插入模板的时间和原因?
你不能说像templates are inserted
。而是从参数中自动推导出参数类型。何时以及如何?这就是TAD的全部意义。
查看C ++ 03中的14.8.2
部分
答案 1 :(得分:0)
它被称为模板参数推导,当然还有特殊规则。许多规则。在标准[temp.deduct]的14.8.2中。
摘要版本是如果有一组模板参数允许调用该函数,那么将使用这些参数调用它。复杂性正是允许的,以及如何在可能的替代方案之间进行选择。