Opened 10 years ago

Closed 5 years ago

#6912 closed Bugs (fixed)

[Phoenix V2] Add tr1_result_of specialization

Reported by: Michel Morin Owned by: Joel de Guzman
Milestone: To Be Determined Component: spirit
Version: Boost Development Trunk Severity: Problem
Keywords: Cc:

Description

To make result_of and tr1_result_of equivalent, we have to add specialization of tr1_result_of. (Boost.Phoenix V2 already has specialization of result_of.)

Also, it would be nice to avoid specialization of result_of, when we use decltype-based result_of. (As for tr1_result_of, it should be specialized even when decltype-based result_of is used.)

So, instead of

template <...>
struct result_of<F()>
{
    typedef XXXX type;
};

we should write

#if !defined(BOOST_RESULT_OF_USE_DECLTYPE) || defined(BOOST_NO_DECLTYPE)
template <...>
struct result_of<F()>
{
    typedef XXXX type;
};
#endif

template <...>
struct tr1_result_of<F()>
{
    typedef XXXX type;
};

A quick grep said the following file specializes result_of.

  • spirit/home/phoenix/core/actor.hpp

Here is a related ticket of Boost.Phoenix V3: #6911

Change History (3)

comment:1 by Joel de Guzman, 10 years ago

Phoenix V2 is in maintenance mode and is superseded by V3. I don't think it is a good idea to change the code unless it is a real showstopper. Use V3 instead.

comment:3 by Joel de Guzman, 5 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.