gpt4 book ai didi

c++ - 如何从给定的(延迟的)指针类型访问类型特征?

转载 作者:太空狗 更新时间:2023-10-29 21:01:39 28 4
gpt4 key购买 nike

假设我有一个这样的类模板:

template<typename T>
struct MyClass
{
typedef T inferred_type;
};

在其他地方我看到了延迟类型

typedef MyClass<int>* param_type;

但是MyClass<int>*被推迟了,我不知道 int这里用于实例化。我实际上正在为 MyClass<int>* 访问另一个 typedef .

我能以某种方式到达 MyClass<int>::inferred_type 吗?来自那个指针 typedef?

编辑:

关于 RiaD的回答,以下行满足了我的需要:

typedef typename std::iterator_traits<param_type>::value_type::inferred_type TheDecucedInferredType;

请注意 typename只需要自 param_type在我在那里看到的上下文中,它本身是一个模板参数。

最佳答案

您可以使用“类型函数”:

template<typename T> struct remove_pointer { typedef T type; };
template<typename T> struct remove_pointer<T*> { typedef T type; };

然后如果 ptrtype 是你的指针类型定义(或模板参数,或其他),你可以写

MyClass<remove_pointer<ptrtype>::type>::value_type

C++11 方便地预定义了这样一个模板remove_pointer

关于c++ - 如何从给定的(延迟的)指针类型访问类型特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17645134/

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