如何使用 'llvm::ilist_iterator<NodeTy>::operator pointer() const' 方法?
How is the `llvm::ilist_iterator<NodeTy>::operator pointer() const` method utilized?
我发现这个方法的实现只是简单地返回存储在ilist_iterator
类中的指针(http://llvm.org/docs/doxygen/html/ilist_8h_source.html#l00195)。然而,我不清楚这个运算符是如何使用的。
我假设有了这个运算符,我们可以做以下操作。
...
ilist_iterator<NodeType> it = ...;
NodeType const *node = it; // rather than &(*it)?
...
我的假设正确吗?
这正是它的作用。它还允许将it
作为参数传递给采用NodeType*
参数的函数。(感觉这对我来说可能有点危险,但我想不出具体的情况会有什么问题。)
相关文章:
- C++ - "!pointer"和"pointer == nullptr"的区别?
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 'operator='已弃用:改用 QDir::setPath()
- 过载'operator new'如何导致无限循环?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 处理"no operator found"
- 如何编写 operator= 用于使用虚拟方法与非平凡成员的匿名联合
- 运算符重载:"operator+"必须采用零个或一个参数
- 使用 operator() 扩展 Eigen::EigenBase
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 有没有办法修改'operator->',以便'z->im'返回复数的虚部
- "No-Const Pointer to Const "调用功能
- "operator +="行为异常的定义
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- "owned pointer"和 std::shared_ptr 的"stored pointer"有什么区别?
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- 为什么 operator() 处的指针成员不起作用?
- 如何使用 'llvm::ilist_iterator<NodeTy>::operator pointer() const' 方法?