我正在使用新的libcxx库,并且有一个调用套接字函数bind()
的代码。问题是,当我输入using namespace std;
编译器让我对下面的代码中的错误:使用套接字函数bind()与libcxx编译代码失败
int res = bind(sockfd, (struct sockaddr *)&myAddr, sizeof(myAddr));
使用铛(SVN版本)的错误:
error: no viable conversion from '__bind<int &, sockaddr *, unsigned long>' to 'int'
int res = bind(sockfd, (struct sockaddr *)&myAddr, sizeof(myAddr));
我觉得现在的问题是,using namespace std;
将标题为<functional>
的函数std::bind()
带入作用域(尽管不包含标题)。由于我使用的是使用整个命名空间std的第三方库,我无法轻易将类名更改为完全限定名。
我想知道这是否是实现库中的问题,或者C++ 11中是否有一些新规则可能会破坏使用bind()
的旧代码。任何想法都将不胜感激。
感谢
罗马
当你说第三方库使用整个命名空间std时,你是什么意思? – Troubadour 2012-04-05 20:26:46
我的意思是它在某些文件中使用了'namespace std;'。 – 2012-04-05 20:43:52
大概只在源文件中,而不是在头文件中?这根本不应该影响你。 – Troubadour 2012-04-05 21:40:17