Subject: Re: [Boost-bugs] [Boost C++ Libraries] #1828: is_class maybe triggering a VC8 compiler bug
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2008-04-15 08:38:34
#1828: is_class maybe triggering a VC8 compiler bug
---------------------------+------------------------------------------------
Reporter: Stefan | Owner: johnmaddock
Type: Bugs | Status: new
Milestone: Boost 1.36.0 | Component: type_traits
Version: Boost 1.34.1 | Severity: Problem
Resolution: | Keywords:
---------------------------+------------------------------------------------
Comment (by johnmaddock):
That's strange: builds OK for me with VC8 (and SVN Trunk), what am I
missing?
Ah... now I see... is_class in trunk has been changed to use the
__is_class intrinsic. The code fails as you mention with 1.35.0.
But... why can't a pointer to member be 16-bytes? If instead of your
assert I add:
std::cout << sizeof(&Der::foo) << std::endl;
void (Der::*mp)();
std::cout << sizeof(mp) << std::endl;
Then both output 16 - really though this should be reserved for pointers
to (possibly) virtual functions - I'm not sure why the compiler thinks
that might be the case here though... I don't think there's anything in
is_class that would trigger that, and is_polymorphic answers false for
that type so that's all right. Why does it matter what size the member
function pointer is?
Ah.. just got your update when trying to post, SVN Trunk already uses
__is_class, does this fix things for you?
John.
--
Ticket URL: <http://svn.boost.org/trac/boost/ticket/1828#comment:2>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:49:57 UTC