Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2001-01-23 09:28:03

From: "Paul Moore" <gustav_at_[hidden]>
> On 22 Jan 2001, at 16:44, Moore, Paul wrote:
> > Well, it's partly me. I should have realised that param_type would be
> > non-deducible. On the other hand, replacing that with a simple IntType
> > gives the error. It looks like MSVC is deducing IntType from the first
> > argument, and then complaining about the second, instead of having
> > go by deducing based on the second argument, and then applying
> > to make the first work.
> This fails on gcc (mingw) and Borland C++ as well. Are all of these
> broken?

You mean the version with the IntType first parameter? No, they are right.
IntType must be deduced identically in the two contexts for the template to
be considered a candidate.

The original version should work with gcc/bcc, however. It's only MSVC that
erroneosly overdeduces. :-)

On MSVC the best workaround I've come up with is to add an additional
template parameter:

template<class IntType, class IntType2> void f(IntType1,

This declaration doesn't ensure that IntType is convertible to IntType2, but
the definition should catch this case.

Peter Dimov
Multi Media Ltd.

Boost list run by bdawes at, gregod at, cpdaniel at, john at