"Christopher Henrich"
wrote: This bug comes up when I try to include
in certain CodeWarrior projects. ... Error: undefined identifier 'ptrdiff_t' ... I get this too when using Code Warrior for PlayStation2 with
. It appears that the compiler-supplied <cstddef> simply contains #include
, so ptrdiff_t is not getting defined in the std namespace. Doing this: namespace std{using ::ptrdiff_t;} #include
fixes it, but I'm not sure that this is strictly allowed.
If anybody knows a better fix, please let me know.
Martin.
Info: http://www.boost.org Wiki: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl Unsubscribe: mailto:boost-users-unsubscribe@yahoogroups.com
I've been wondering how they got around this problem in MSVC6 since it doesn't place any of the ``C'' symbols in std::. If you look closely in the config directory there is a config directive called BOOST_NO_STDC_NAMESPACE that fixes this problem with that exact solution. Well something *really* close: #ifdef BOOST_NO_STDC_NAMESPACE # include <cstddef> namespace std { using ::ptrdiff_t; using ::size_t; } #endif That is from boost/config/suffix.hpp. I think that I have v 1.28.0 but I moved it to c:\boost so that I can upgrade w/o changing all of my include paths. Anyway, to make a long story short, you probably want to add BOOST_NO_STDC_NAMESPACE to either user.hpp or modify boost/config/compiler/metrowerks.hpp to correctly set it based on whatever compiler defines are in effect. - Dave