Modify

Ticket #7815 (closed Bugs: fixed)

Opened 16 months ago

Last modified 16 months ago

boost/intrusive/detail/has_member_function_callable_with.hpp: inheriting from a const class

Reported by: 1czajnik@… Owned by: igaztanaga
Milestone: To Be Determined Component: intrusive
Version: Boost 1.52.0 Severity: Problem
Keywords: Cc: 1czajnik@…

Description

Hello,

I tried to use a boost::container::vector with a Texas Instruments compiler, and I got an error pointing to line 88 of <boost/intrusive/detail/has_member_function_callable_with.hpp> "Invalid base class", with Type=const std::allocator<something>"

Here's the context:

      template <typename Type>
      class BOOST_PP_CAT(has_member_function_named_, BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME)
      {
         struct BaseMixin
         {
            void BOOST_INTRUSIVE_HAS_MEMBER_FUNCTION_CALLABLE_WITH_FUNCNAME();
         };

         struct Base : public Type, public BaseMixin { Base(); }; // <-- line 88

The problem seems to be the constness of Type. Here's a simplified example:

struct X {};

template < class T >
struct Y : T { Y() {} };

int main()
{
    Y<const X> y;
}

The above example compiles fine with Linux gcc version 4.5.4, and MinGW 4.5.0, but fails with my TI compiler.

For now, my workaround is:

struct Base : public ::boost::remove_cv<Type>::type, public BaseMixin { Base(); }; // <-- line 88

Attachments

7815.patch Download (714 bytes) - added by 1czajnik@… 16 months ago.

Change History

Changed 16 months ago by 1czajnik@…

comment:1 Changed 16 months ago by Krzysztof Czaiński <1czajnik@…>

  • Cc 1czajnik@… added

comment:2 Changed 16 months ago by igaztanaga

  • Status changed from new to closed
  • Resolution set to fixed

Thanks for the report, fixed in trunk in revision 82126.

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.