Opened 10 years ago
Closed 10 years ago
#7815 closed Bugs (fixed)
boost/intrusive/detail/has_member_function_callable_with.hpp: inheriting from a const class
| Reported by: | Owned by: | Ion Gaztañaga | |
|---|---|---|---|
| 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 (1)
Change History (3)
by , 10 years ago
| Attachment: | 7815.patch added |
|---|
comment:1 by , 10 years ago
| Cc: | added |
|---|
comment:2 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.

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