Boost logo

Boost :

From: Samuel Krempp (krempp_at_[hidden])
Date: 2002-01-25 13:34:03

On Fri, 2002-01-25 at 18:23, Peter Dimov wrote:

> I haven't looked at this in detail, but the T & / T const & overload is
> ambiguous when the argument is const.

I am not sure about that.

Of course, if T is a const type,
void foo(const T& );
void foo( T& );
are the exact same thing.

But the template parameters deduction system apparently disambiguate the
the paragraph, "Deducing template arguments from a function
call", in the standard says :
if A is a cv-qualified type, the top level cv-qualifiers of A's type
are ignored for type deduction

Isn't that the case here ?

What is known for sure, is that gcc and comeau both accepts the
following :

class A {
int n;

template<class T>
void foo(T&) {
        A errorMaker;
        errorMaker.n = 10;
//for comeau online test. We only get to know compilation results.
//with -tused, it gives us a way to know which function is called

template<class T>
void foo(T const &) {

void mymain() {
int const y = 5;
foo( y );


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