gpt4 book ai didi

c++ - 指针和函数的部分特化

转载 作者:行者123 更新时间:2023-11-27 23:59:47 25 4
gpt4 key购买 nike

这些是 less 方法的模板片段,它接受两个通用参数作为输入并返回 bool 结果

  • 第一个模板是通用的
  • 其次是const char*的显式特化类型

  • 指针的第三部分特化

如何实现函数的偏特化?

template<typename T> //general form
class C{
public: bool isLess(const T& v1, const T& v2){
return v1<v2;
}
};

template<> //explicit specialization for char*
class C<const char*>{
public: bool isLess(const char* v1, const char* v2){
return strcmp(v1,v2) < 0;}
};

template <typename T> //partial specialization for pointers
class C<T*> {
public: bool isLess(T* v1, T* v2){return *v1 < *v2;}
};
//partial specialization for functions?

最佳答案

我认为您或多或少想要如下内容:

template <typename R, typename... Args>
class C<R(*)(Args...)> {
using func_ptr = R(*)(Args...);
public: bool isLess(func_ptr l, func_ptr r) { return std::less<>{}(l, r); }
};

关于c++ - 指针和函数的部分特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com