This question already has answers here:
Overloaded non-type template is ambiguous while non-templated function is ok
(3个答案)
4年前关闭。
尝试重载函数和函数模板时,我得到不同的行为。对于功能:
(3个答案)
4年前关闭。
尝试重载函数和函数模板时,我得到不同的行为。对于功能:
void foo(int)
{
std::cout << "int";
}
void foo(char)
{
std::cout << "char";
}
foo(42)
是int
。但是对于功能模板:template <int T>
void bar()
{
std::cout << "int T";
}
template <char T>
void bar()
{
std::cout << "char T";
}
bar<42>()
是不明确的调用。即使我使用像bar<'a'>()
这样的char,也会发生这种情况。为什么一个起作用而不另一个起作用? 最佳答案
标准 N4140 (贷方为 M.M )在中提供了此说明和示例。14.8.2模板参数推导:
但是,请注意,以下草稿中的规则已更改为because:
建议的示例是:
关于c++ - 功能模板重载的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37425307/
10-17 02:02