title: What does Clang's 'type_visibility' attribute do, and when should one use it?
body: <p>It is used in libc++ on many template types such as <code>tuple_element</code>, <code>tuple</code>, etc.</p>
  
  <p>As far as I can tell there is no public documentation of what it does other than the <a href="http://llvm.org/viewvc/llvm-project?view=revision&amp;revision=175587">commit message</a> introducing it and this <a href="https://github.com/llvm-mirror/clang/blob/master/test/CodeGenCXX/type_visibility.cpp">unit test</a> in the clang project.</p>