c++/5543: Conversions and template functions

Wolfgang Bangerth bangerth@ticam.utexas.edu
Wed Jan 22 20:56:00 GMT 2003


This is a simpler testcase:
--------------------
template <class> struct type {};

template <class S> void foo (type<S>);

template <class T>
struct C {
    operator T();
};

int main () {
  C<type<int> > c;
  foo (c);
}
--------------------------

gcc fails, because it can't find an instance of foo(C<type<int> >). It 
could, however, if it tried to apply the conversion operator of C first, 
but I don't know whether it is required to do so. I suspect not, since it 
also fails for icc7.

W.

-------------------------------------------------------------------------
Wolfgang Bangerth             email:            bangerth@ticam.utexas.edu
                              www: http://www.ticam.utexas.edu/~bangerth/




More information about the Gcc-bugs mailing list