Hi

I've narowed down the source of the error. All in qtconcurrentmap.h

There's this around line 714

template <template <typename> class Sequence, typename T, typename U, 
typename V>
Sequence<U> blockingMapped(const Sequence<T> &sequence, U (map)(V))
{
    typedef Sequence<U> OutputSequence;
    return blockingMappedReduced(sequence, map, &OutputSequence::append,
                                               QtConcurrent::OrderedReduce);
}

The call to blockingMappedReduced causes an ambiguity with the versions 
around line 440:

template <typename Sequence, typename MapFunctor, typename T, typename 
C, typename U>
C blockingMappedReduced(const Sequence &sequence,
                        MapFunctor map,
                        T (C::*reduce)(U),
                        QtConcurrent::ReduceOptions options = 
QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | 
QtConcurrent::SequentialReduce))
{

and 510

template <typename Sequence, typename T, typename U, typename V, 
typename C, typename W>
C blockingMappedReduced(const Sequence &sequence,
                        T (map)(U),
                        V (C::*reduce)(W),
                        QtConcurrent::ReduceOptions options = 
QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | 
QtConcurrent::SequentialReduce))
{

The only difference between these two function signatures is that the 
first has a

MapFunctor map,

argument and the second has

T (map)(U),

It looks to me as though this is ambiguous. I'll try to reduce this to a 
small standalone example.

A+
Paul

-- 
Paul Floyd                 http://paulf.free.fr


Reply via email to