c++: Boost 1.48 type traits and Cocoa inclusion weirdness

后端 未结 2 961
Happy的楠姐
Happy的楠姐 2021-02-20 11:15

I just updated boost to version 1.48.0 on a project i am developing on OSX Lion that also includes the Cocoa headers. After doing so I got a load of errors all pointing to has_p

2条回答
  •  无人共我
    2021-02-20 11:38

    I had essentially the same problem, and with the clue from ildjam, I found the cause and a work-around.

    The (terrible) macro name is check, defined in AssertMacros.h. According to the comments in that file, in the future Apple will remove the old names. For now Apple have added a work-around to suppress the old names which is to define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES to 0 before AssertMacros.h is processed. e.g.

    #define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
    #import 
    

    If you use a prefix file, then you could put the definition there. Alternatively, a direct work-around is to undef check before including type_traits.hpp.

    #ifdef check
    #undef check
    #endif
    #include "boost/type_traits.hpp"
    

    (Details submitted to Boost Trac too: https://svn.boost.org/trac/boost/ticket/6219 )

提交回复
热议问题