以下代码编译良好:
template<typename T>
void f(const T &item) { return; }
int main()
{
f("const string literal");
}
在ideone编译成功:http: //ideone.com/dR6iZ
但是当我提到返回类型时,它不会编译:
template<typename T>
T f(const T &item) { return item; }
int main()
{
f("const string literal");
}
现在它给出了错误:
prog.cpp:6: 错误:没有匹配函数调用'f(const char [21])'</p>
ideone 的代码:http: //ideone.com/b9aSb
即使我创建了返回类型const T
,它也不会编译。
我的问题是:
- 为什么它不编译?
- 返回类型与错误和函数模板实例化有什么关系?