簡體   English   中英

VS2008提升boost :: phoenix

[英]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.

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