<div class="gmail_quote">2011/10/17 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;">
<div><div></div></div>

Committed revision 142235.<br>
<br>
I modified the alignas support a little bit.  If I messed it up, let me know.<br></blockquote><div><br>It looks okay, and compiles fine. Thanks for the continued commit support!<br><br>Hi,<br>
<br>
Attached is a new patch for libc++ and msvc interoperability.<br>
<br>
I added a new MSVC only support header for <limits>, and implemented it as platform-specifically as I could/should :).<br>
I renamed a "__value" variable to "__value_"; "__value" is a CLR (MSVC's
 Managed C++) keyword, and it produces an error in non-CLR mode.<br>
The notable changes are at the bottom of the patch file.<br>
<br>
It gets me as far as this undecipherable error (which is in a _LIBCPP_HAS_NO_VARIADICS section, this will not change in the near future; MSVC 11.0 will not have variadic templates... grrrr):<br>
<br>
M:\Development\Source\libc++\include\type_traits(1192) : error C2516: 
'std::common_type<_Tp>::type' : is not a legal base class<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(1122) : see declaration of 'std::common_type<_Tp>::type'<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(1192) : see 
reference to class template instantiation 
'std::__is_assignable_imp<_Tp,_Arg,__formal>' being compiled<br>
M:\Development\Source\libc++\include\type_traits(1244) : error C2516: 
'std::common_type<_Tp>::type' : is not a legal base class<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(1122) : see declaration of 'std::common_type<_Tp>::type'<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(1244) : see 
reference to class template instantiation 
'std::__destructible_imp<_Tp,__formal>' being compiled<br>
M:\Development\Source\libc++\include\type_traits(2013) : error C2516: 
'std::common_type<_Tp>::type' : is not a legal base class<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(1122) : see declaration of 'std::common_type<_Tp>::type'<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(2013) : see 
reference to class template instantiation 
'std::__is_constructible0_imp<__formal,_Tp>' being compiled<br>
M:\Development\Source\libc++\include\type_traits(2021) : error C2516: 
'std::common_type<_Tp>::type' : is not a legal base class<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(1122) : see declaration of 'std::common_type<_Tp>::type'<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(2021) : see 
reference to class template instantiation 
'std::__is_constructible1_imp<__formal,_Tp,_A0>' being compiled<br>
M:\Development\Source\libc++\include\type_traits(2029) : error C2516: 
'std::common_type<_Tp>::type' : is not a legal base class<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(1122) : see declaration of 'std::common_type<_Tp>::type'<br>
        with<br>
        [<br>
            _Tp=<br>
        ]<br>
        M:\Development\Source\libc++\include\type_traits(2029) : see 
reference to class template instantiation 
'std::__is_constructible2_imp<__formal,_Tp,_A0,_A1>' being 
compiled<br>
M:\Development\Source\libc++\include\utility(264) : error C4519: default template arguments are only allowed on a class template<br>
        M:\Development\Source\libc++\include\utility(352) : see 
reference to class template instantiation 'std::pair<_T1,_T2>' 
being compiled<br><br>There's two different errors here: C2516 and C4519. I hope these aren't insurmountable unimplemented template features. I'm sure you could shed more light on what feature or implementation detail is being relied on here. The second error does seem to be caused by the first.<br>
<br>Comments and commits welcome!<br><br>Ruben<br></div></div>