[英]using boost lambda with compound expressions
我有一個Visual Studio 2008 C ++ 03應用程序,我想使用boost :: lambda來執行此操作:
enum { fooflag = 0x00000001; }
bool IsFooFlagActive( DWORD flags )
{
return ( flags & fooflag ) != 0;
}
不幸的是,這不起作用:
namespace bl = boost::lambda;
bool is_foo_flag_active = ( ( bl::_1 & fooflag ) != 0 )( 0x00000001 );
讓boost :: lambda執行復合表達式的正確方法是什么? 我需要綁定!=運算符嗎?
謝謝
我不知道底層的問題是什么,但添加一個演員使它工作:
namespace bl = boost::lambda;
bool is_foo_flag_active =
((bl::_1 & static_cast<DWORD>(fooflag)) != 0)(0x00000001);
話雖這么說,在新代碼中停止使用Boost.Lambda - 它已經被正式棄用(除了文檔以外),支持Boost.Phoenix近一年了,而且有充分的理由。 (當你使用Phoenix而不是Lambda時,你的代碼就會干凈利落地編譯。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.