如何'部分'specialize成员方法

How to 'partially' specialize member methods?

本文关键字:成员方法 specialize 部分 如何      更新时间:2023-10-16

我有一个类

template<class T, bool isOrdered>
class Vector
{
public:
    int Find(const T& t); // Return its index if found.
    // Many other methods.
};

根据isOrderedtruefalseFind有两个版本。成员方法没有部分专门化(class T不是专门化的)。我的问题是如何使它们专业化?谢谢

std::integral_constant:上使用过载

template<class T, bool isOrdered>
struct Vector {
   int find(const T& t) {
       return find_impl(t, std::integral_constant<bool,isOrdered>());
   } 
   int find_impl (const T& t, std::true_type)  {return 1;}
   int find_impl (const T& t, std::false_type) {return 2;}
};