【发布时间】:2014-06-03 02:28:05
【问题描述】:
鉴于此代码:
#include <type_traits>
template<char ...Cs>
auto foo() -> typename std::enable_if<(sizeof...(Cs) > 1)>::type{
}
template<char C>
void foo() {
}
int main(){
foo<'s'>();
}
我有上面的 c++ 程序,我只是想知道,根据标准中规定的规则,两个“foo”模板中的哪一个将被实例化用于 main 中的“foo”调用。
【问题讨论】:
-
它不打印任何东西...?
-
你试过运行它吗?此外,没有明显的
print功能...... -
这是漫长的一天。我的意思是应该调用哪个 foo。
-
没有。因为你什么都没打电话。
-
你应该看看 SFINAE。当
sizeof...(Cs) < 2与您的情况一样,第一个模板被禁用。
标签: c++ templates variadic-templates sfinae template-argument-deduction