gpt4 book ai didi

c++ - 在 C++ 中提取另一个泛型类型的泛型类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:15 25 4
gpt4 key购买 nike

假设我有一个 Foo 类,它使用两种不同的泛型,一种是 _Type另一个是_Comparator . _Type已知是 std::vector , std::list , 或 std::string ,所以它里面会有一个类型:T将在 vector 内和 list ; char将在 string 内.

我的另一个泛型 _Comparator是一个可选的模板参数,用户可以通过它指定她自己的小于函数、仿函数或 lambda 函数。如果没有提供参数作为第二个模板参数,它应该默认为 std::less<M>仿函数,由此类型 M应为 _Type 中包含的元素类型.

我不知道如何执行此操作的语法。

我试过:

template <typename _Type<T>, typename _Comparator = less<T> >

没用。

最佳答案

使用@Joachim Pileborg 在评论中提到的方法,我能够想出以下方法,这使我能够访问 _Type 的内部类型:

template <typename _Type, 
typename _Comparator = less<typename _Type:: value_type> >
class Foo
{
public:
// some methods
private:
_Type sequence;
_Comparator comparator;
};

现在 std::less 可以毫无怨言地比较正确的类型。

关于c++ - 在 C++ 中提取另一个泛型类型的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23268936/

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