簡體   English   中英

提升功能並提升lambda

[英]Boost function and boost lambda

我已經看到了一些相關的問題,但我仍然感到困惑。 這種語法有什么問題:

boost::function<int (int)> g = f;
boost::function<int (int)> g2 = 2*g(boost::lambda::_1);

我在gcc 4.3.4上嘗試使用boost 1.35和1.38(這是我躺在的兩個裝置),它們都給出了錯誤的變化:

no match for call to '(boost::function<int ()(int)>) (const boost::lambda::lambda_functor<boost::lambda::placeholder<1> >&)'

您不能直接使用占位符調用函數。 你必須使用bind

boost::function<int (int)> g2 = 2 * boost::lambda::bind(g, boost::lambda::_1);

例子

我建議你放棄Boost.Lambda因為它已經過時了。 支持C ++ 0x的編譯器提供本機lambda並且更容易理解。 您可以使用4.4或更高版本的GCC,Visual Studio 2010也支持C ++ 0x。

暫無
暫無

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

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