从函数返回 ::迭代器不会编译
Returning ::iterator from function does not compile
以下存储库编译良好:
#include <tuple>
#include <vector>
class Foo
{
public:
typedef std::tuple<int, int> foo_type;
std::vector<foo_type>::iterator Find() {
return Listeners.begin();
}
std::vector<foo_type> Listeners;
};
int main()
{
Foo foo;
auto i = foo.Find();
}
但是当我在 P、Q 上模板化元组时,如以下存储库所示,出现此错误:
语法错误:标识符"查找"之前缺少";"
#include <tuple>
#include <vector>
template<typename P, typename Q>
class Foo
{
public:
typedef std::tuple<P, Q> foo_type;
std::vector<foo_type>::iterator Find() {
return Listeners.begin();
}
std::vector<foo_type> Listeners;
};
int main()
{
Foo<int, int> foo;
auto i = foo.Find();
}
你在这里缺少一个typename
:
typename std::vector<foo_type>::iterator Find() {
^^^^^^^^
return Listeners.begin();
}
有关更详细的说明,请参阅我必须在哪里以及为什么必须放置"模板"和"类型名"关键字?
相关文章:
- 编译时二叉搜索树错误的反向迭代器表示"no matching function call for operator=()"
- 编译错误 std::vector<std::shared_ptr<T>>迭代器和擦除方法
- 如果我在下面的代码中使用 list 而不是 vector,为什么在我尝试在迭代器之间执行减法的行中编译失败?
- C++向量迭代器nth_element编译错误
- 为什么 std::variant 使用开始和结束迭代器进行编译?
- 在将迭代器与C 中的null进行比较时,编译误差
- 编译错误与迭代器取消引用的 decltype
- 使用set<set>迭代器的编译错误<int>
- 通过迭代器调用功能无法在派生对象上编译
- C :多态容器 /迭代器与编译时间概念 /特征
- 迭代器使用的编译时验证
- 从函数返回 ::迭代器不会编译
- 二叉树编译错误的迭代器
- C++:使用clang编译以迭代器为值的映射时出现巨大错误
- C++ - 未编译的对象向量的迭代器
- 编译错误 ::向量 ::迭代器
- 链表迭代器模板中的编译错误
- 取消引用字符串迭代器无法编译
- Clang 3.0 C++ std::map<>::迭代器编译错误
- 使用映射迭代器编译错误