鉴于此代码:
#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”调用。
答案 0 :(得分:0)
您可以为每个人添加打印件以查找:
template<char ...Cs>
auto foo() -> typename std::enable_if<(sizeof...(Cs) > 1)>::type{
cout << "1" << endl;
}
template<char C>
void foo() {
cout << "2" << endl;
}
void EnableIfWithSizeof(){
foo<'s'>();
}
int main() {
EnableIfWithSizeof();
return 0;
}
结果输出为2