clang-6 和 -std=c++17 -- 不能调用 bind(2)
clang-6 and -std=c++17 -- can't invoke bind(2)
尝试使用 clang++ 版本 6.0 和 -std=c++17
标志编译以下代码:
if (bind(ssock, res->ai_addr, res->ai_addrlen) != 0)
{
return -1;
}
我收到以下错误:
.../udt4/app/test.cpp:90:51: error: invalid operands
to binary expression ('__bind<int &, sockaddr *&, unsigned int &>' and
'int')
if (bind(ssock, res->ai_addr, res->ai_addrlen) != 0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
/usr/include/c++/v1/system_error:587:1: note: candidate function not viable: no
known conversion from '__bind<int &, sockaddr *&, unsigned int &>' to
'const std::__1::error_code' for 1st argument
operator!=(const error_code& __x, const error_code& __y) _NOEXCEPT
....
不知何故,完全标准的函数bind(2)
似乎被重新声明为返回error_code
而不是旧的int
。
这是怎么回事?我如何很好地解决这个问题 - 并保持代码可与早期编译器一起编译?
您的
程序中可能有using namespace std
或类似的功能,在这种情况下,编译器可能会认为您想要std::bind
。
要引用您可能真正想要的绑定,您可以使用 ::bind
。
相关文章:
- boost::bind()类似的东西,但用于函数调用
- std::bind 是否实现了 std::ref 和 std::cref 来消除函数调用的歧义?
- 在调用 std::bind 的产品后意外调用析构函数
- 使用 object 中的方法调用带有 std::bind 和 std::function.target 的 C 样式函数
- 我可以调用 bind() 然后在同一个套接字描述符上调用 connect() 吗?
- clang-6 和 -std=c++17 -- 不能调用 bind(2)
- 调用 'bind(<未解析的重载函数类型>、const std::_Placeholder<1>&、int*) 时没有匹配函数
- 调用函数,该函数是 std::bind(ed) 与 std::ref 参数
- 在 boost::bind 中指定参数放置器后,为什么在调用它时省略它
- C++ Boost::bind:指向绑定函数的指针只能用于调用该函数
- 重用 boost::bind 调用的返回值的正确方法是什么?
- 在boost::thread构造函数内部调用boost:;bind()时发生编译器错误
- 使用boost::bind调用std::map中的函子
- 如何将数字"Bind"到一串单词/短语中,以便我可以循环调用它?
- 使用哪种类型可调用std::bind
- 调用socket::connect, socket::bind, socket::listen而不使用getaddrin
- C++:BOOST-bind 错误:没有匹配函数来调用 'bind(<未解析的重载函数类型>, ...?
- 使用boost::bind调用boost::Statechart中的函数
- 使用boost::bind调用错误时没有匹配的函数
- 如何使用std::bind()调用虚函数的基类版本?