Re: [Boost-bugs] [Boost C++ Libraries] #1828: is_class maybe triggering a VC8 compiler bug

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