【发布时间】:2012-03-24 12:07:31
【问题描述】:
有没有办法用一些 c++11 或最多一个 boost 库来做到这一点?
#include <iostream>
#include <typeinfo>
using namespace std;
template <typename T> class remove_all_pointers{
public:
typedef T type;
};
template <typename T> class remove_all_pointers<T*>{
public:
typedef typename remove_all_pointers<T>::type type;
};
int main(){
//correctly prints 'i' on gcc
cout<<typeid(remove_all_pointers<int****>::type).name()<<endl;
}
【问题讨论】:
-
你想从什么中删除这些指针?
-
您的
remove_all_pointers模板确实删除了所有指针。你还需要什么? -
这里的问题是“标准库中是否有与我编写的代码相同的工作”?
-
@downvoters 我看不出寻找标准功能来实现某些目标的问题。即使您可以自己编写 3 行代码,为什么不看看是否有用于此目的的标准工具呢? OP 需要它来做什么与回答问题几乎无关。
-
另外,这并不是一个如此深奥的功能,以至于人们想知道为什么有人可能想要它。 C++11 标准和 Boost 已经有了
remove_pointer。他所要求的只是remove_all_pointer,就像它具有用于删除所有数组限定符的remove_all_extent。他想要基本类型;为什么想要这么有问题的东西?
标签: c++ boost c++11 typetraits