ฉันมีฟังก์ชั่นที่รับสองอาร์กิวเมนต์:
template <typename T1, typename T2>
void foo(T1 arg1, T2 arg2)
{ std::cout << arg1 << " + " << arg2 << '\n'; }
และอีกหนึ่งตัวแปรที่ควรส่งต่อข้อโต้แย้งเป็นคู่:
template <typename... Args>
void bar(Args&&... args) {
static_assert(sizeof...(Args) % 2 == 0);
( foo( std::forward<Args>(args), std::forward<Args>(args) ), ... );
// ^ Sends each argument twice, not in pairs
}
ฉันต้องการbar(1,2,3,4)
โทรfoo(1,2)
และfoo(3,4)
มีวิธีทำเช่นนั้นหรือไม่?
4
มันอันตรายที่จะส่งต่อสิ่งที่เหมือนกันสองครั้ง
—
AndyG