gpt4 book ai didi

c++ - VS2010 是否存在 boost::bind 问题?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:40 26 4
gpt4 key购买 nike

我有以下代码行,在 2010 年之前在 g++ 和 Visual Studio 下编译得很好。

std::vector<Device> device_list;

boost::function<void (Device&, boost::posix_time::time_duration&)> callback =
boost::bind(&std::vector<Device>::push_back, &device_list, _1);

Device 是一个类,没有什么特别之处。

现在我刚刚将我的 Visual Studio 版本升级到 2010 并且编译失败:

Error   1   error C2780: 'boost::_bi::bind_t<_bi::dm_result<MT::* ,A1>::type,boost::_mfi::dm<M,T>,_bi::list_av_1<A1>::type> boost::bind(M T::* ,A1)' : expects 2 arguments - 3 provided C:\developments\libsystools\trunk\src\upnp_control_point.cpp    95

这是怎么回事,我该如何解决?

谢谢。

最佳答案

这可能是因为 vector::push_back 现在通过支持或 C++0x 功能有 2 个重载,使得 bind 不明确。

void push_back(
const Type&_Val
);
void push_back(
Type&&_Val
);

这应该有效,或者使用@DeadMG 的回答中建议的内置函数:

std::vector<Device> device_list;

boost::function<void (Device&, boost::posix_time::time_duration&)> callback =
boost::bind(static_cast<void (std::vector<Device>::*)( const Device& )>
(&std::vector<Device>::push_back), &device_list, _1);

关于c++ - VS2010 是否存在 boost::bind 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4248357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com