[英]boost::phoenix with VS2008
使用boost :: phoenix的簡單示例:
#include <vector>
#include <algorithm>
#include <boost/phoenix.hpp>
namespace ph = boost::phoenix;
namespace place = boost::phoenix::placeholders;
struct A
{
int val_;
explicit A(int i) : val_(i) {}
int foo() { return val_;}
};
int main()
{
std::vector<A> coll;
coll.push_back(A(2));
coll.push_back(A(4));
coll.push_back(A(5));
coll.push_back(A(7));
std::vector<A>::const_iterator cit;
cit = std::find_if(coll.begin(), coll.end(), ph::bind(&A::foo, place::_1) % 2 == 1);
int val = (*cit).val_;
return 0;
}
它可以編譯,但是VS2008的輸出中有一些警告:
c:\\ boost_1_47_0 \\ boost \\ phoenix \\ bind \\ detail \\ member_variable.hpp(54):警告C4180:應用於函數類型的限定符沒有任何意義; 被忽略
它的來歷:1)代碼不正確2)再次出現MS問題。 3)boost :: phoenix庫效果不好?
Boost開發人員似乎決定不解決此問題,可能是因為確定編譯器存在錯誤。 這里是一個鏈接:
https://svn.boost.org/trac/boost/ticket/1097
我認為這是用於一般的boost :: bind(),但是我敢打賭這可能不會解決。 該票證中建議有一種解決方法。 您可以嘗試這樣做(它只會禁用警告)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.