John Maddock wrote:
It seems to me that it would be better still to put
#ifdef BOOST_NO_INTRINSIC_WCHAR_T BOOST_STATIC_ASSERT(is_same<unsigned short, wchar_t>::value); #else BOOST_STATIC_ASSERT(!is_same<unsigned short, wchar_t>::value); #endif
after the conditional definition of BOOST_NO_INTRINSIC_WCHAR_T to verify that the macro has been set/unset correctly.
Not a bad idea, but it brings in a lot of type-traits code that may not actually be needed...
Actually, it could be as simple as #if defined(BOOST_NO_INTRINSIC_WCHAR_T) template< typename T > struct assert_no_intrinsic_wchar_t; template<> struct assert_no_intrinsic_wchar_t<wchar_t> { typedef void type; }; typedef assert_no_intrinsic_wchar_t<unsigned short>::type assert_no_intrinsic_wchar_t_; #else template< typename T > struct assert_intrinsic_wchar_t; template<> struct assert_intrinsic_wchar_t<wchar_t> {}; template<> struct assert_intrinsic_wchar_t<unsigned short> {}; #endif With an appropriate comment as suggested by Christopher, it'd be a noticable improvement over the status quo. -- Aleksey Gurtovoy MetaCommunications Engineering