c++ - 我应该看到 std::bind 和 boost::bind 之间的显着差异吗?

标签 c++ c++11 boost boost-asio stdbind

我正在探索 g++-4.7(具体来说是 Ubuntu/Linaro 4.7.3-2ubuntu~12.04)对 C++11 的支持,我似乎发现了差异。

特别是,如果我注释掉 #include <boost/bind.hpp>并系统地替换出现的 boost::bindstd::bind在 Boost ASIO 异步客户端示例中(取自 http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/example/http/client/async_client.cpp),程序不再编译。

有什么解释吗?

最佳答案

#include <functional>
namespace boost {
    namespace asio {
        namespace stdplaceholders {
            static decltype ( :: std :: placeholders :: _1 ) & error = :: std :: placeholders :: _1;
            static decltype ( :: std :: placeholders :: _2 ) & bytes_transferred = :: std :: placeholders :: _2;
            static decltype ( :: std :: placeholders :: _2 ) & iterator = :: std :: placeholders :: _2;
            static decltype ( :: std :: placeholders :: _2 ) & signal_number = :: std :: placeholders :: _2;
        }
    }
}

并使用 boost::asio::stdplaceholders::* 而不是 boost::asio::placeholders::*

关于c++ - 我应该看到 std::bind 和 boost::bind 之间的显着差异吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17412267/

相关文章:

c++ - Clion 的调试器正在运行程序,但常规控制台却没有。

c++ - C++ 线程类中的错误导致它在退出时消耗 100% CPU

c++ - 接受任何类型的可调用并且知道参数类型

c++ - 尝试学习 boost::intrusive Q3 - 在 IC 中存储指针时,我应该使用 smart_pointer 吗?

c++ - 使用 C/C++ 创建多线程应用程序的最简单方法是什么?

c++ - 使用委托(delegate)从后台任务更新 UI

C++ 使用模板为原始类型创建别名?

c++ - 非阻塞线程安全堆栈

boost::spirit::karma 生成器规则中的语义 Action

c++ - 在不调用 main 方法的情况下运行 Boost.Test