>>592 を試してみたが、可変長引数Args&&... argsの場合、スタックが引数の逆順に呼び出されるのを回避するにはインスタンスの一時的生成が不可避。
よって、残念ながら下記URLの可変引数テンプレートと「パラメータパックの拡張」は使えない。
https://cpprefjp.github.io/lang/cpp11/variadic_templates.html

一時インスタンスを生成せず引数呼び出し順で追記を実装にするには引数の数に応じた従来通りの関数オーバーロード定義が必須になる。
関数でoperator<<()と等価の機能を実装する例は以下のとおり。ここでは引数の数は1個から4個まで定義した。

template<typename OS, typename T1> OS& AddTest(OS& os, const T1& a) { os << a; return os; }
template<typename OS, typename T1, typename T2> OS& AddTest(OS& os, const T1& a, const T2& b) { os << a << b; return os; }
template<typename OS, typename T1, typename T2, typename T3> OS& AddTest(OS& os, const T1& a, const T2& b, const T3& c) { os << a << b << c; return os; }
template<typename OS, typename T1, typename T2, typename T3, typename T4> OS& AddTest(OS& os, const T1& a, const T2& b, const T3& c, const T4& d) { os << a << b << c << d; return os; }

AddTest(std::cout, "hello", ' ', 1, "world");