gpt4 book ai didi

c++ - 从函数模板参数中推导复杂类型

转载 作者:行者123 更新时间:2023-11-30 04:33:01 29 4
gpt4 key购买 nike

我有另一个 C++ 模板问题。我是一个懒惰的人,所以我尽量不指定模板参数。现在我有一个功能

template< typename EasyLookingObject >
void myfunct( EasyLookingObject& obj ) {
//do something with obj
}

现在,EasyLookingObject 实际上是一个

boost::ptr_list< A< STDContainer::<TargetType*> > >

为了使用 obj,我需要知道 STDContainer 和 TargetType 的类型。你能帮我弄到这些类型吗?

问题 1:EasyLookingObject::value_type 确实给了我一个指针类型。我如何从中推导出完整类型并在 typedef 中使用它?

这可能也适用于 STDContainer::value_type 问题。

最佳答案

使用部分特化删除指针是微不足道的:

template <typename T>
struct remove_ptr {
typedef T type;
};

template <typename T>
struct remove_ptr<T*> : remove_ptr<T> { };

(我相信 Boost 也有类似的东西。)

综合起来:

typedef typename remove_ptr<typename EasyLookingObject::value_type>::type a_t;
typedef typename a_t::container_type container_t;
typedef typename remove_ptr<typename container_t::value_type>::type target_t;

关于c++ - 从函数模板参数中推导复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272332/

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