如何检查一个模板是否是另一个模板的 class 成员
How to check if a template is a class member of another template
我制作了一个按成员(例如学生按年龄或姓名)对向量进行排序的函数,所以我制作了一个模板函数
template<class ElemType, class ElemMember>
void sort(vector<ElemType>& vec, ElemMember member, bool ascending = true)
{
for(int j = 0; j < vec.size()- 1; ++j)
for (int i = 0; i < vec.size() - j - 1; ++i)
if ((vec[i].*member < vec[i + 1].*member) ^ ascending)
swap(vec[i], vec[i + 1]);
}
我想添加约束来检查 ElemType
是否是具有成员的 class 以及我的 ElemMember
是否是 class 的成员。
使用指向 ElemType
的数据成员的指针作为 sort
的参数应该足够了:
template <typename ElemType, typename MemberType>
void sort(std::vector<ElemType>& vec, MemberType ElemType::*member, bool ascending = true)
// ~~~~~~~~~~~~~~~~~~~~~^
我制作了一个按成员(例如学生按年龄或姓名)对向量进行排序的函数,所以我制作了一个模板函数
template<class ElemType, class ElemMember>
void sort(vector<ElemType>& vec, ElemMember member, bool ascending = true)
{
for(int j = 0; j < vec.size()- 1; ++j)
for (int i = 0; i < vec.size() - j - 1; ++i)
if ((vec[i].*member < vec[i + 1].*member) ^ ascending)
swap(vec[i], vec[i + 1]);
}
我想添加约束来检查 ElemType
是否是具有成员的 class 以及我的 ElemMember
是否是 class 的成员。
使用指向 ElemType
的数据成员的指针作为 sort
的参数应该足够了:
template <typename ElemType, typename MemberType>
void sort(std::vector<ElemType>& vec, MemberType ElemType::*member, bool ascending = true)
// ~~~~~~~~~~~~~~~~~~~~~^