我無法理解爲什麼下面將矢量轉換爲映射到指向成員的指針?
#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 '`
語境下不允許重載函數
我該如何解決這個問題的歧義?
這不是錯誤的地方,雖然... – Mehrdad
好的,我得到許多其他的錯誤。更新。 –
哦,只是'&'丟失。哇。非常感謝! :) – Mehrdad