C++auto无法使用默认模板参数推导类型

  • 本文关键字:参数 类型 默认 C++auto c++
  • 更新时间 :
  • 英文 :


我注意到,如果我写:

template<typename T = int> void Test(T t) {};

则以下代码不编译:

auto x = Test;

然而,该代码确实如此,并将x推导为void(*x((int t(:

auto x = Test<int>;

我只是想知道,为什么在第一种情况下,它不假设类型参数是int,并将其与第二种情况相同?

如果您有一个带有默认参数的函数,例如:

int f(int n=0);

使用默认参数调用此函数是通过以下操作完成的:

int g=f();

而不是这个:

int g=f;

同样的原理适用于模板实例化:

auto x = Test<>;

相关内容

最新更新