<div dir="ltr">Some parts of Clang are very careful about keeping implementation details out of headers, and others aren't. Consider RecordLayoutBuilder, for example, whose class definition is in the .cpp file.<div><br></div><div>In general I would say that we are in favor of hiding as many implementation details as we can, it's just thankless work to refactor headers to sink code code into .cpp files, prune transitive includes, and fix the resulting build errors.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 10, 2016 at 4:07 PM, <Alexander G. Riccio> via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">While investigating compile times, I noticed that there's no information in the LLVM coding standards about code in headers. Many LLVM/Clang headers have lots of complex code in headers - I'm specifically looking at the Static Analyzer projects (seemingly slowest compile times, biggest hinderance to my productivity) - that probably doesn't need to be there. Nobody likes slow compile times.<div><br></div><div>What's the LLVM policy on code in headers?</div><div><br></div><div>If there is none, the <a href="https://www.chromium.org/developers/coding-style/cpp-dos-and-donts" target="_blank">Chromium "<font face="monospace, monospace">C++ Dos and Don'ts</font>"</a> page offers a good starting point.</div><div><br><br clear="all"><div><div><div dir="ltr"><div><div dir="ltr"><span style="font-size:12.8px">Sincerely,</span><br style="font-size:12.8px"><span style="font-size:12.8px">Alexander Riccio</span><br style="font-size:12.8px"><span style="font-size:12.8px">--</span><br style="font-size:12.8px"><span style="font-size:12.8px">"Change the world or go home."</span><div style="font-size:12.8px"><a href="http://about.me/ariccio" target="_blank">about.me/ariccio</a></div><div style="font-size:12.8px"><a href="http://about.me/ariccio" target="_blank"><br></a></div><div style="font-size:12.8px">If left to my own devices, I will build more.</div><div style="font-size:12.8px">⁂</div></div></div></div></div></div>
</div></div>
<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div>