zhouyizhou added a comment. In D115014#3169400 <https://reviews.llvm.org/D115014#3169400>, @simon_tatham wrote:
> I don't think so, I'm afraid. If you look at the definition of > `MacroInfo::tokens_begin()` in `clang/include/clang/Lex/MacroInfo.h`, you see > that it doesn't return a raw `Token *`: it returns a C++ iterator object. > > using tokens_iterator = SmallVectorImpl<Token>::const_iterator; > > tokens_iterator tokens_begin() const { return ReplacementTokens.begin(); } > > So you do have to dereference the iterator to get a `Token &`, and then > address-take that to turn it into a `Token *`. Thank Simon for reviewing my patch ;-) In llvm/include/llvm/ADT/SmallVector.h, I found this: using const_iterator = const T *; also I use gdb to print the return type of tokens_begin() (gdb) ptype const_iterator type = const class clang::Token { ... } * So, there still remains little puzzle in my head ;-) Thanks again Zhouyi Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D115014/new/ https://reviews.llvm.org/D115014 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits