ฉันแค่เขียนโรงงานออบเจ็กต์ทั่วไปและใช้เมตาไลบรารีของตัวประมวลผลก่อนเร่งความเร็วเพื่อสร้างเทมเพลตแบบต่างๆ (ใช้ 2010 และไม่รองรับ) ฟังก์ชันของฉันใช้การอ้างอิง rval และstd::forward
เพื่อทำการส่งต่อที่สมบูรณ์แบบและทำให้ฉันคิดว่า ... เมื่อ C ++ 0X ออกมาและฉันมีคอมไพเลอร์มาตรฐานฉันจะทำสิ่งนี้กับเทมเพลตตัวแปรจริง ฉันจะเรียกร้องstd::forward
ให้มีการโต้แย้งได้อย่างไร?
template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
y(std::forward(...params)); //? - I doubt this would work.
}
วิธีเดียวที่ฉันคิดได้ว่าจะต้องมีการเปิดกล่อง ... params ด้วยตนเองและฉันก็ยังไม่ค่อยอยู่ที่นั่นเช่นกัน มีไวยากรณ์ที่เร็วกว่าที่จะใช้งานได้หรือไม่?
void f(Params&& ...params)