首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost::phoenix with VS2008

boost::phoenix with VS2008
EN

Stack Overflow用户
提问于 2011-10-10 16:48:25
回答 1查看 108关注 0票数 0

使用boost::phoenix的简单示例:

代码语言:javascript
复制
#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库做得不好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-11 02:20:15

似乎Boost开发人员决定不解决这个问题,也许是因为它被确定为编译器的一个错误。这里有一个链接:

https://svn.boost.org/trac/boost/ticket/1097

我想这是针对一般的boost::bind()的,但我敢打赌这可能不会被修复。在该标签中有一个建议的解决方法。您可以尝试这样做(它只会禁用警告)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7710409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档