我有类似以下代码的内容:
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 值而不是引用吗?
关于如何正确完成我想要的可能的提示或线索。
关于递归函数调用的问题,新提议的标准提供了哪些保证,是否有迹象表明上述可变参数版本将与原始版本一样最佳?(我应该添加内联或类似的吗?)