<div dir="ltr">Ah - perhaps it'd be worth having a standalone forward declaration for clarity? I don't think I've seen this construct anywhere else in LLVM? But I could be wrong.</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Apr 11, 2017 at 10:51 AM Aaron Ballman via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">aaron.ballman added inline comments.<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
================<br class="gmail_msg">
Comment at: include/clang/AST/StmtIterator.h:137<br class="gmail_msg">
+  inline friend StmtIterator<br class="gmail_msg">
+  cast_away_const(const struct ConstStmtIterator &RHS);<br class="gmail_msg">
 };<br class="gmail_msg">
----------------<br class="gmail_msg">
dblaikie wrote:<br class="gmail_msg">
> the "struct" here is a bit atypical/should be removed<br class="gmail_msg">
The forward reference is needed because `ConstStmtIterator` is defined below `StmtIterator`. If I use `class` rather than `struct`, then MSVC diagnoses because of the mismatched class-key (which is a pretty low-value diagnostic, but I see no reason to disable it either).<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://reviews.llvm.org/D31153" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D31153</a><br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div>