在C++中,关键字template和typename应该放在哪里以及为什么?
大家好!我写C++已经大约一年了,但模板仍然让我头疼。尤其是在依赖名称(dependent names)的上下文中,关键字`template`和`typename`让我感到困惑。我知道它们是为了让编译器能够解析代码,但具体何时使用它们对我来说是个谜。
下面是一个让我困惑的具体例子。假设我有一个模板容器类,我想编写一个函数,它接受该容器的迭代器并访问嵌套类型`value_type`:
```cpp
#include
template
void processContainer(const Container& c) {
typename Container::const_iterator it = c.begin();
// ... 对迭代器进行一些操作
}
```
这里我必须在`Container::const_iterator`前写`typename`。为什么?毕竟`const_iterator`是`std::vector`内部一个完全定义的类型。我明白如果我只写`Container::const_iterator`,编译器可能会认为它