如何检查一个模板是否是另一个模板的类成员?

问题描述 投票:0回答:1

我做了一个按成员排序的函数(如按年龄或姓名排序的学生),所以我做了一个模板函数

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 是一个有成员的类,如果我的 ElemMember 是该类的成员。

c++ templates typetraits
1个回答
3
投票

使用指向 ElemType的参数,作为 sort,应该足够了。

template <typename ElemType, typename MemberType>
void sort(std::vector<ElemType>& vec, MemberType ElemType::*member, bool ascending = true)
//                                    ~~~~~~~~~~~~~~~~~~~~~^

DEMO

© www.soinside.com 2019 - 2024. All rights reserved.