我阅读了源代码clang API,并看到了这段代码

00127   Optional<T> getAs() const {
00128     if (!T::isKind(*this))
00129       return None;
00130     T t;
00131     ProgramPoint& PP = t;
00132     PP = *this;
00133     return t;
00134   }

130-133行上的代码是什么?为了什么?
http://clang.llvm.org/doxygen/ProgramPoint_8h_source.html#l00127

最佳答案

130:创建返回值,默认情况下已初始化。

131:创建对返回值的引用。

132:使用ProgramPoint的赋值运算符分配给参考。
乍一看没有找到一个,所以可能是使用编译器生成的赋值运算符。

133:归还

创建引用的目的可能是以下一项或多项:

  • 检查T是否是ProgramPoint的子类
  • 在132行
  • 中强制使用ProgramPoint赋值运算符(而不是子类T)

    关于c++ - clang API中的奇怪代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27156985/

    10-11 17:06