RE: [Boost-users] Re: Build+Install+/Zc:wchar_t in Visual studio builds
Edward Diener <eddielee@tropicsoft.com> wrote:
John Maddock wrote:
Guys,
We could of course create a new build variant to handle this, but with 8 regex lib/dll variants already I'm not keen to add another 8 (apart from anything else testing already takes too long).
I think you have to do this John if you want to support both the C++ wchar_t and the MS wchar_t in Boost libraries. Although there are VC++ predefined macros, _WCHAR_T_DEFINED and _NATIVE_WCHAR_T_DEFINED, which are defined when /Zc:wchar_t is used, they are also stupidly defined, according to the documentation, when typedef unsigned short wchar_t is used ( talk about idiotic MS decisions ).
That appears to be a documentation bug. I checked this in VC++ 7.1 and _NATIVE_WCHAR_T_DEFINED is not defined by <cstddef>. There is no sign of a #define _NATIVE_WCHAR_T_DEFINED in the headers for version 7.0 or 7.1.
So Boost needs to use a macro which the end-programmer must define which tells whether or not /Zc:wchar_t is being used or not, and create another set of libraries accordingly.
Even in the absence of a macro, this test works: #include <cstddef> #include <iostream> #include <ostream> #include "boost/type_traits.hpp" int main() { std::cout << "/Zc:wchar_t was "; if (!boost::is_same<wchar_t, __wchar_t>::value) std::cout << "not "; std::cout << "used\n"; }
participants (1)
-
Ben Hutchings