Modify

Ticket #7079 (closed Bugs: fixed)

Opened 22 months ago

Last modified 13 months ago

addressof a boost::function and SolarisStudio compiler

Reported by: Luke Elliott <lukester_null@…> Owned by: viboes
Milestone: Boost 1.54.0 Component: utility
Version: Boost 1.50.0 Severity: Problem
Keywords: Cc:

Description

This:

#include <boost/utility/addressof.hpp>
#include <boost/function.hpp>

int main()
{
    boost::function<void (void)> pFunc;
    boost::addressof(pFunc);
    return 0;
}

fails with:

CC address-of.cpp -I/path/to/boost -library=stlport4 ".../addressof.hpp", line 61: Error: Could not find a match for boost::detail::addressof_impl<boost::function<void()>>::f(boost::detail::addr_impl_ref<boost::function<void()>>, int) needed in boost::addressof<boost::function<void()>>(boost::function<void()>&). "address-of.cpp", line 8: Where: While instantiating "boost::addressof<boost::function<void()>>(boost::function<void()>&)". "address-of.cpp", line 8: Where: Instantiated from non-template code.

Handily the existing workaround in addressof.hpp fixes it if extended to check for Sun...

template<class T> T * addressof( T & v )
{
#if (defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) ) ) || defined( __SUNPRO_CC )

    return Boost::detail::addressof_impl<T>::f( v, 0 );

#else

    return Boost::detail::addressof_impl<T>::f( Boost::detail::addr_impl_ref<T>( v ), 0 );

#endif
}

Compiler info:

CC -V
CC: Sun C++ 5.12 SunOS_i386 2011/11/16

I'm not sure if this is really the correct solution (addressof_test passes), but I hope it is of some use!

Regards

Luke Elliott.

Attachments

Change History

comment:1 Changed 20 months ago by Matt Stupple <matt_stupple@…>

Can I 'vote' for this fix to be integrated into the main Boost release? I hit exactly the same error with Solaris Studio 12.3 (CC 5.12) and the suggested solution works perfectly for me.

comment:2 Changed 15 months ago by viboes

  • Owner changed from no-maintainer to viboes
  • Status changed from new to assigned

comment:3 Changed 13 months ago by viboes

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

(In [83524]) Utility/address_off: fix #7079.

comment:4 Changed 13 months ago by viboes

  • Milestone changed from To Be Determined to Boost 1.54.0
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.