新しいlibcxxライブラリを使用していて、ソケット関数を呼び出すコードがありますbind()
。問題は、入力using namespace std;
すると、コンパイラが次のコードのエラーを表示することです。
int res = bind(sockfd, (struct sockaddr *)&myAddr, sizeof(myAddr));
clang(svn build)を使用したエラー:
error: no viable conversion from '__bind<int &, sockaddr *, unsigned long>' to 'int'
int res = bind(sockfd, (struct sockaddr *)&myAddr, sizeof(myAddr));
using namespace std;
問題は、関数std::bind()
をヘッダー<functional>
からスコープに持ってくることだと思います(ヘッダーは含まれていませんが)。名前空間std全体を使用するサードパーティのライブラリを使用しているため、クラス名を完全修飾名に簡単に変更することはできません。
これがライブラリの実装の問題なのか、それともを使用する古いコードを壊す可能性のある新しいルールがC++11にあるのか疑問に思いましたbind()
。これについての考えをいただければ幸いです。
ありがとう
ローマ人