我目前正在學習通用 lambda 函式,我很好奇它們之間的區別:
[](auto x){}; 和 []<typename T>(T x){};
他們都做同樣的事情,但一個比另一個快嗎?擁有這兩種語法有什么意義。
uj5u.com熱心網友回復:
雖然兩者在功能上是等價的,但它們是 C 14 和 C 20 的特性,即泛型 lambda 和泛型 lambda 的模板語法,也就是說后者只在 C 20 中是良構的。
與auto可以接受任何型別的 相比,后者可以使 lambda 接受特定型別,例如:
[]<class T>(const std::vector<T>& x){};
此外,它還使 lambda 能夠以更自然的形式轉發引數:
[]<class... Args>(Args&&... args) {
return f(std::forward<Args>(args)...);
};
您可以通過原始論文P0428獲得更多詳細資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362274.html
上一篇:在模板中顯示11月的所有日期
