كيف يمكن لدعوة std :: إعادة التوجيه على جميع الحجج في وظيفة variadic؟

StackOverflow https://stackoverflow.com/questions/2821223

سؤال

كنت فقط أكتب مصنع كائن عام وأستخدم مكتبة Meta-Prevrocessor Preprocessor لإنشاء قالب متغير (باستخدام عام 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.
}

إن الطريقة الوحيدة التي يمكنني التفكير بها تتطلب تفريغًا يدويًا ... معارف ولست هناك بعد. هل هناك بناء جملة أسرع من شأنه أن يعمل؟

هل كانت مفيدة؟

المحلول

كنت ستفعل:

template <typename ...Params>
void f(Params&&... params)
{
    y(std::forward<Params>(params)...);
}

ال ... يقول إلى حد كبير "خذ ما هو على اليسار ، ولكل معلمة قالب ، قم بفكها وفقًا لذلك."

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top