The constructor of __list_node is never called, because it has a
member (__value_) that can't be constructed when we construct __list_node.
Putting __value_ in a union solves the issue for C++11 and above, but C++03
doesn't allow putting classes with a non-trivial copy constructor in a union.
This patch stores __value_ as aligned storage bytes when using c++03 and puts
reinterpret_casts everywhere it's used.
Continuation of https://reviews.llvm.org/D99624.