簡體   English   中英

如何在可變參數函數中的所有參數上調用std :: forward?

[英]How would one call std::forward on all arguments in a variadic function?

我只是編寫一個通用對象工廠並使用boost預處理器元庫來創建一個可變參數模板(使用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,我也不是那里。 是否有更快的語法可行?

你會這樣做:

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

...幾乎說“拿左邊的東西,對於每個模板參數,相應地解壓縮它。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM