> On the other hand, perhaps you have a use case that clearly demonstrates the > need for BOOST_HAS_CURRENT_FUNCTION?
The SMART_ASSERT library clearly needs it. The idea is: when an assertion fails, in case BOOST_CURRENT_FUNCTION holds a meaningful value, I want to show it. Otherwise, not. Testing for "(unknown)" seems pretty ugly. Here's what I do now: // thanks Pavel Vozenilek! // based on boost/current_function.hpp namespace boost { namespace smart_assert { namespace Private { // note: I need the BOOST_SMART_ASSERT_FUNCTION_EXISTS macro, in order // to know if I add the BOOST_SMART_ASSERT_FUNCTION to the context or not inline void current_function_helper() // SGI's __FUNCSIG__ requires this { #define BOOST_SMART_ASSERT_FUNCTION_EXISTS #if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) # define BOOST_SMART_ASSERT_FUNCTION __PRETTY_FUNCTION__ #elif defined(__FUNCSIG__) # define BOOST_SMART_ASSERT_FUNCTION __FUNCSIG__ #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x550) # define BOOST_SMART_ASSERT_FUNCTION __FUNC__ #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901) # define BOOST_SMART_ASSERT_FUNCTION __func__ #elif (defined BOOST_MSVC) && (__MSC_VER >= 1300) # define BOOST_SMART_ASSERT_FUNCTION __FUNCDNAME__ #elif defined(__IBMCPP__) && (__IBMCPP__ <= 500) # define BOOST_SMART_ASSERT_FUNCTION __FUNCTION__ #elif (defined __HP_aCC) && (__HP_aCC <= 33300) # define BOOST_SMART_ASSERT_FUNCTION __FUNCTION__ #else # undef BOOST_SMART_ASSERT_FUNCTION_EXISTS #endif } } } } // namespaces // the context surrounding the assertion #ifdef BOOST_SMART_ASSERT_FUNCTION_EXISTS #define SMART_ASSERT_CONTEXT context("file",BOOST_SMART_ASSERT_FILE).context("line",__LINE__).context(BOO ST_SMART_ASSERT_FUNCTION_KEY,BOOST_SMART_ASSERT_FUNCTION) #else #define SMART_ASSERT_CONTEXT context("file",BOOST_SMART_ASSERT_FILE).context("line",__LINE__) #endif I would really like the BOOST_HAS_CURRENT_FUNCTION macro. Thanks. Best, John > > _______________________________________________ > Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost > _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost