----- Original Message ----- 
From: "David Abrahams" <[EMAIL PROTECTED]>

> >> template <class T>
> >> struct X
> >> {
> >>     template <class U>
> >>     X(X<U> const&, typename enable_if<some_property_of<U>::value,
> > int*>::type = 0);
> >          ^
> > It chokes here?  
> 
> Sorry, no.  I mean the 2nd '<' in that line.

Okay.

> > Is it legal to use the template parameter 'U' in a non-deduced
> > context like that?  I'm curious because I thought that it wasn't
> > (though I could be wrong).
> 
> Why do you say that's non-deduced? Up to the point of enable_if, it's
> standard stuff; that's how shared_ptr conversion works.

I didn't know that this was legal:

template<class T> struct identity {
    typedef T type;
};

template<class T> void func(const T&, typename identity<T>::type* = 0);

int main() {
    func(10);
    return 0;
}

Paul Mensonides
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to