2014-06-07 52 views
8

即:創建與推導出的參數類型相同的局部變量最簡單的方法是什麼?

[](auto const& foo) { 
    ??? bar; // should be same base type as foo, minus const& 
} 

到目前爲止,我使用的是:

typename std::remove_const<typename std::remove_reference<decltype(foo)>::type>::type combination 

但我真的希望那裏有一個更簡單的替代品!

+1

據我所知,我是'auto'類型演繹語義學,但在我需要使用'decltype'的地方,因爲我沒有分配表達式。他們介紹'decltype(auto)foo = bar'來解決逆向問題,但現在我想'decltype (bar)foo;'; – mmocny

回答

10

std::decay<decltype(whatever)>::typedecay_t如果您的std庫已更新。

它模擬各種函數參數衰變。它處理如果你的參數是功能參考。在引用數組上,它也產生一個指針,這不太理想。

如果您想要以不同方式處理這些問題,您必須自行推出。

+0

+1不知道'decay'去掉了參考 – Praetorian

+0

太棒了!是的,它支持'std :: decay_t',所以更好。 – mmocny

相關問題