C++:有没有办法从实例化模板中提取类型?

标签 c++ templates

//a class template to do something to STL container
template<typename T/*should be a STL container*/,typename Ele/*the type of element*/>
struct foo{
T a_container_with_an_element(){
    T con;
    Ele e;
    con.push_back(++++e);
    return con;
}

如您所见,将元素的类型放入模板的参数中是非常愚蠢的,因为它已经包含在容器的类型中。

那么,有什么魔法可以从 T 中获取元素的类型吗?

非常感谢 :-)

最佳答案

如果容器是标准库容器,则元素的名称是容器的嵌入名称,如下所示:

typedef typename T::value_type type;

标准容器中有一些标准名称(例如,参见 vector on cppreference )和 C++ standard §23.2.

X::value_type
X::reference
X::const_reference
X::iterator
X::const_iterator
X::difference_type
X::size_type

关于C++:有没有办法从实例化模板中提取类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25288727/

相关文章:

C++ - 枚举范围? Bjarne Stroustrup 书

c++ - 在不同的命名空间中测试特定的类名(SFINAE?)

c++ - 如何检查静态成员变量模板?

c++ - 为什么模板只能在头文件中实现?

C++ 从异步线程更新 Windows 窗口

c++ - 如何使用整数参数访问结构列表 (c++)?

c++ - 根据模板类型动态指定要使用的方法

c++ - 在编译时检测 C++ 中的函数

c++ - 将变量数据发送到其他类时出现问题

c++ - 在 OpenGL ES 中调整由投影仪引起的失真