我试图为SFINAE做一个激励性的例子 我注意到你不需要以下内容:
#include <iostream>
using namespace std;
template<typename T>
struct Foo
{
void add(int count, const T& val) // add "count" number of val's
{
cout << "count, val" << endl;
}
template<typename It>
void add(It beg, It end) // add items [beg,end)
{
cout << "beg, end" << endl;
}
};
int main()
{
int a=1;
int xx[] = {1,2,3};
Foo<int> foo;
foo.add(xx, xx+3);
foo.add(2, a);
}
编译,运行和打印:
乞求,结束
伯爵,瓦朗
我不明白为什么对add
的第二次调用不明确。
答案 0 :(得分:10)
基本上:
add(int count, const T& val)
首选非模板。