This is meant to be a general place to list things that should be done "someday"


ABI Related Tasks
=================
* Explicitly manage and verify symbols exported from the dylib.

CXX Runtime Library Tasks
=========================
* Fix that CMake always link to /usr/lib/libc++abi.dylib on OS X.
* Look into mirroring libsupc++'s typeinfo vtable layout when libsupc++/libstdc++
  is used as the runtime library.
* Investigate and document interoperability between libc++ and libstdc++ on
  linux. Do this for every supported c++ runtime library.

Atomic Related Tasks
====================
* future should use <atomic> for synchronization.

Test Suite Tasks
================
* Move all libc++ specific tests from test/std into test/libcxx.
* Improve the quality and portability of the locale test data.
* Convert failure tests to use Clang Verify.

Misc Tasks
==========
* Find all sequences of >2 underscores and eradicate them.
* run clang-tidy on libc++
* Document the "conditionally-supported" bits of libc++
* Look at basic_string's move assignment operator, re LWG 2063 and POCMA
* libc++ is missing try_emplace
* Put a static_assert in std::allocator to deny const/volatile types (LWG 2447)

