我无法理解为什么下面的代码
#include <string>
#include <vector>
#include <map>
using namespace std;
struct Student { int id; string name; };
template<typename T, typename U, U T::* Member>
map<U, T> group_by(const vector<T> &items)
{
map<U, T> result;
for (vector<T>::const_iterator it = items.begin(); it != items.end(); ++it)
result[it->*Member] = *it;
return result;
}
int main()
{
vector<Student> items;
group_by<Student, int, Student::id>(items); //Error
return 0;
}
给出这个错误:
*error C2440*: 'specialization' : cannot convert from `''` to `'int Student::* const '`
上下文不允许消除重载函数的歧义
我该如何解决?