c++ - 获取模板类型的基类型(删除 const/reference/等)

标签 c++ templates c++11

是否有返回给定类型的基本类型 的类型特征模板。 基本类型 是指去除了所有值修饰符、const、volatile 等的类型。例如,使用假设的特征函数:

base<int>::type == int
base<int const>::type == int
base<int&>::type == int

我知道 remove_constremove_reference 并且我目前只是结合使用它们。我想知道是否已经存在这样的特征,也许我所指的是否有合适的名称?

最佳答案

我可能会定义一个类型别名,例如:

template<typename T>
using base_type = typename std::remove_cv<typename std::remove_reference<T>::type>::type;

请注意,在一篇不再可用的文章中,R. Martinho Fernandes为这样的类型别名提议名称 Unqualified

标准类型特征 std::decay ,另一方面与上面的相同对数组和函数类型做更多的事情,这可能是也可能不是你想要的。

关于c++ - 获取模板类型的基类型(删除 const/reference/等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16749557/

相关文章:

c++ - Python Numpy方法对应C++ Eigen make crash

c++ - 是否可以在派生类中选择性地定义类型

c++ - C++ 模板特化中声明的范围

c++ - 如何从任意函数中创建仿函数?

c++11 - C++ 迭代器不匹配错误

c++ - 让线程等待内存中值更改的有效方法?

c++ - 挂载文件系统和挂载磁盘驱动器有什么区别

c++ - realloc() 问题,未分配

c++ - 铛。嵌套模板的二元运算符重载

c++ - templates, typename, lambda -> 依赖名称不依赖?