默认参数的模板推导

时间:2019-11-17 22:30:06

标签: c++

请考虑以下代码部分(godbolt example

template<typename T>
void foo(T = int{})
{}

int main()
{
    foo();
}

代码无法编译。错误消息指出即使已知默认参数的类型也无法推论T,所以我认为T会推论为int

为什么会这样?模板推演是否发生在替换默认参数之前?如果是这样,则在标准中指定?还是定义实现?

请注意,该代码确实使用foo<int>();进行编译。

0 个答案:

没有答案