c++ - 模板函数不接受原始类型?

标签 c++ templates

此代码无法编译,但我不知道为什么,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/

相关文章:

c++ - 接受 lambda 作为参数的类方法 - 错误消息

c++ - 连接预期 token ';' 得到 ')'

c++ - 如何访问其他模板类实例的私有(private)成员?

templates - Golang 模板范围换行删除

c++ - 为什么必须在哪里放置 “template”和 “typename”关键字?

c++ - 模块机器类型和目标机器类型 Visual Studio 2013

c++ - 在 Windows XP 中获取 GPU 连接类型?

C++ - 返回 const unique_ptr

c++ - 如何在 C++ 模板化列表类中实现高效添加

html - 如何让内部 DIV 宽度超出外部 DIV 的填充?