gpt4 book ai didi

c++ - 这是什么构造 : template void funcName(int i)?

转载 作者:行者123 更新时间:2023-12-03 06:56:03 27 4
gpt4 key购买 nike

我不小心在编写模板函数特化代码时犯了一个错误,结果构造通过了 VS17 的编译。 (下面包含的代码中的第三个构造)

这是一个有效的结构吗?我该如何调用这个函数?

template <class T> void tempfunc(T t)
{
cout << "Generic Template Version\n";
}

template <>
void tempfunc<int>(int i) {
cout << "Template Specialization Version\n";
}

template <int> void tempfunc(int i)
{
cout << "Coding Mistake Version\n";
}

我无法调用第三个构造。

最佳答案

是的,这是一个有效的结构。这是一个模板重载,它是在 int 类型的非类型模板参数上模板化的。

你可以这样调用它:

tempfunc<42>(42);

请注意,不使用模板语法的调用仍将调用在类型参数上模板化的版本:

tempfunc(42);   // calls specialization
tempfunc(true); // calls primary

这是一个 demo

关于c++ - 这是什么构造 : template <int> void funcName(int i)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64161826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com