此代码无法编译,但我不知道为什么,typeid()
函数也可以将 int
作为输入参数,所以问题一定与模板有关机制,但我不明白失败背后的原因。
#include <iostream>
#include <typeinfo>
template<typename T> void func(T)
{
std::cout << typeid(T).name() << std::endl;
}
int main()
{
func(int);
return(0);
}
这个模板/代码有什么问题?
最佳答案
您需要传递 int
类型的实例,而不是类型本身:
func(int());
^^ note the parentheses
如果您不想传递一个实例,您可以像这样更改您的代码:
#include <iostream>
#include <typeinfo>
template<typename T> void func()
{
std::cout << typeid(T).name() << std::endl;
}
int main()
{
func<int>();
return(0);
}
关于c++ - 模板函数不接受原始类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13884566/