Question regarding template instantiation of tempory type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux