私は次のコードのようなものを持っています:
template<typename T1, typename T2, typename T3, typename T4>
void inc(T1& t1, T2& t2, T3& t3, T4& t4) { ++t1; ++t2; ++t3; ++t4; }
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; }
今後の標準から提案された可変個引数テンプレートを使用して、それを再実装したいと思います。ただし、これまでオンラインで見たすべての例はprintfのような例のようですが、ここでの違いは参照の使用にあるようです。私は次のことを思いついた:
inline void inc() { }
template<typename T>
inline void inc(T&& t) { ++t; }
template<typename T,typename ... Args>
inline void inc(T&& t, Args&& ... args) { ++t; inc(args...); }
私が知りたいのは:
参照の代わりにr値を使用する必要がありますか?
私が望むことを正しく達成する方法についての可能なヒントまたは手がかり。
再帰関数呼び出しの問題に関して、新しく提案された標準はどのような保証を提供しますか?上記の可変個引数バージョンが元のバージョンと同じくらい最適であるという兆候はありますか?(インラインまたはそのようなものを追加する必要がありますか?)