Question regarding template instantiation of tempory type

Arthur Tse phyfai@physics.unimelb.edu.au
Mon Nov 15 13:18:00 GMT 2004


Hello,

I encounter a problem that I'm not sure if it is a feature or a bug:

Consider the function

template<T> void f( T& ) {}

If I write

const int x = 3;
f(x);

GCC compiles, corrently deducing " T = const int " .

But, if I write

f(3);

I get
error: invalid initialization of non-const reference of type 'int&' from 
a temporary of type 'int'

GCC cannot deduce " T = const int " from a temporary type, which seems 
unreasonable to me. While I can add a const version to fix that problem:

template<T> void f( const T& ) {}

This is problematic when I want to have, say, n arguments, for this 
would require 2^n versions of a template function -- and this is what I 
am trying to do.

Thanks a lot.

Arthur Tse



More information about the Gcc-help mailing list