C++ 如何检查迭代器的相等性?

C++ 如何检查迭代器的相等性?,c++,llvm,intermediate-code,C++,Llvm,Intermediate Code,在我的llvm代码中,我尝试用以下代码检查迭代器InsertPos是否指向基本块的最后一条指令 BasicBlock::iterator InsertPos = BB->begin(); LLVMContext &Context = BB->getContext(); while ( !( isa<CallInst>(InsertPos) || ( InsertPos == BB->getTerminator() ) ) ) //

在我的
llvm
代码中,我尝试用以下代码检查迭代器InsertPos是否指向基本块的最后一条指令

  BasicBlock::iterator InsertPos = BB->begin();
  LLVMContext &Context = BB->getContext();

  while ( !( isa<CallInst>(InsertPos) || 
      ( InsertPos == BB->getTerminator() ) ) ) // <-- Error here
    ++InsertPos;
正确的方法是什么?

BB->getTerminator()
返回指针(
TerminatorInst*
),而
InsertPos
是迭代器(
BasicBlock::iterator
)。类型不匹配

也许你可以试试

&*InsertPos == BB->getTerminator()

您还可以检查一条指令是否是带的终止符

BB->getTerminator()
返回指针(
TerminatorInst*
),而
InsertPos
是迭代器(
BasicBlock::iterator
)。类型不匹配

也许你可以试试

&*InsertPos == BB->getTerminator()

您还可以检查一条指令是否是带的终止符

我是这样解决的

BasicBlock::iterator InsertPos = BB->begin();
BasicBlock::iterator TermPos = BB->getTerminator(); // <-- Added this variable

while ( !( isa<CallInst>(InsertPos) || ( InsertPos == TermPos ) ) ) 
  ++InsertPos;
BasicBlock::迭代器InsertPos=BB->begin();
基本块::迭代器TermPos=BB->getTerminator();// 我是这样解决的

BasicBlock::iterator InsertPos = BB->begin();
BasicBlock::iterator TermPos = BB->getTerminator(); // <-- Added this variable

while ( !( isa<CallInst>(InsertPos) || ( InsertPos == TermPos ) ) ) 
  ++InsertPos;
BasicBlock::迭代器InsertPos=BB->begin();
基本块::迭代器TermPos=BB->getTerminator()//