<br><div class="gmail_quote">2011/12/2 Howard Hinnant <span dir="ltr"><<a href="mailto:hhinnant@apple.com">hhinnant@apple.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Was this intended to be a patch for libc++? It looks like maybe the wrong patch file got attached.<br></blockquote><div><br></div><div>My apologies, I got mixed up with a winpthreads patch.</div><div><br></div><div>I'll repeat the shortlist:</div>
<div> - <type_traits>: MSVC 10 and 11 has a messed up decltype (which fails on dependant types in templates). I added _LIBCPP_HAS_BROKEN_DECLTYPE which removes the problematic code (which includes common_type and is_constructible, and everything that uses is_constructible).</div>
<div> - <type_traits>: I added MSVC intrinsics for available type_traits, and moved __is_construct outside the already present ifdef's to assure it's availability necessary for later. The type_traits could maybe do with a __config macro, but they're not quite homogeneous across compilers, and this would lead to 3-4 macros controlling what code should be used to maintain consistency, which kind of sucks.</div>
<div> - <memory>: MSVC chokes on the "class = enable_if<....>" template constructs. I removed the "class =" bit, and the code compiles, but I'm unsure if this keeps the intended behavior.</div>
<div> - <memory>, <__split_buffer>, <vector>, <string>: MSVC fails to resolve the correct overloads (see my previous mail, obviously a compiler bug), but this is easily solved by moving the function definition into the class definition above (instead of after).</div>
<div> - locale_win32.h: rename __restrict__ to __restrict, which works for both MSVC and MinGW.</div><div><br></div><div>I apologize for the size, but there's a lot of the same stuff, or cut-pasted code.</div><div><br>
</div><div>Upcoming changes I can predict: more overload resolution failures, so moving function definitions into the class definitions, and some "__except" variables that need to be renamed (conflicting MSVC keyword). Also: "extern" on templates gives errors when they're later defined, I'm not sure how to solve this. MSVC does not support C++11 "extern templates" :(</div>
<div><br></div><div>Thanks,</div><div><br></div><div>Ruben</div></div>