Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用模板参数中定义的类型_C++_Templates - Fatal编程技术网

C++ 使用模板参数中定义的类型

C++ 使用模板参数中定义的类型,c++,templates,C++,Templates,当使用诸如vector、list等容器类时,我可以通过编写vector::value\u type来使用元素的类型 但是,下面的代码 template<class container> void foo(container& c) { typedef container::value_type elementtype; elementtype b; } 模板 void foo(集装箱和集装箱) { typedef容器::value_type elementtype;

当使用诸如
vector
list
等容器类时,我可以通过编写
vector::value\u type
来使用元素的类型

但是,下面的代码

template<class container>
void foo(container& c)
{
    typedef container::value_type elementtype;
    elementtype b;
}
模板
void foo(集装箱和集装箱)
{
typedef容器::value_type elementtype;
元素b型;
}
失败,错误为“
在'elementtype'之前需要初始值设定项”
”。
当容器类型作为模板参数提供时,是否可以推断元素类型,或者我是否必须将元素类型作为额外的模板参数提供?

您缺少所需的typename关键字:

typedef typename container::value_type elementtype;
这是因为
container
在此模板中是一个依赖名称,因此编译器无法知道container::value\u type是否始终是一个类型,因为它可能取决于
container
的选择

这个问题肯定是某个地方的常见问题


编辑,它是:

您缺少所需的typename关键字:

typedef typename container::value_type elementtype;
这是因为
container
在此模板中是一个依赖名称,因此编译器无法知道container::value\u type是否始终是一个类型,因为它可能取决于
container
的选择

这个问题肯定是某个地方的常见问题

编辑,它是: