How to properly use references with variadic templates
- by Hippicoder
I have something like the following code:
template<typename T1, typename T2, typename T3>
void inc(T1& t1, T2& t2, T3& t3) { ++t1; ++t2; ++t3; }
template<typename T1, typename T2>
void inc(T1& t1, T2& t2) { ++t1; ++t2; }
template<typename T1>
void inc(T1& t1) { ++t1; }
I'd like to reimplement it using the proposed variadic templates from the upcoming standard. However all the examples I've seen so far online seem to be printf like examples, the difference here seems to be the use of references. I've come up with the following:
template<typename T>
void inc(T&& t) { ++t; }
template<typename T,typename ... Args>
void inc(T&& t, Args&& ... args) { ++t inc(args...); }
What I'd like to know is:
Should I be using r-values instead of references?
Possible hints or clues as to how to accomplish what I want correctly.
What guarantees does the new proposed standard provide wrt the issue of the recursive function calls, is there some indication that the above variadic version will be as optimal as the original? (should I add inline or some-such?)