title: How to distribute C++ modules?
body: <p>Organizing and building a project with the &quot;old&quot; C++ compilation model usually follows some common practice:</p>
  <ul>
  <li>Put your public headers in a <code>include</code> directory.</li>
  <li>Put implementation and private headers in a <code>src</code> directory</li>
  <li>Compile a library from your sources</li>
  <li>Distribute the library (static or dynamic) together with the public headers</li>
  </ul>
  <p>Of course there are many different ways to achieve this, but the main point here is: <em>You distribute the library binary and public headers as plain text.</em></p>
  <p>Now with modules, the compilation model can change drastically. But everything I found so far only explains how to use modules in a closed project - no distribution, no outside dependencies.</p>
  <p>Now it would be possible to put everything belonging to a particular module in a single file (which would have some nice benefits like avoiding duplication of declararions). That opens the question: What do I have to distribute to enable others to use my library? And what parts can I keep private? Maybe this is solved with implementation units?</p>