私は非常に大きなプロジェクトで作業しています。あるファイルでは、コンパイル時にエラーが発生しました。コンパイラは、winsock.h bind()
は実際にはstd::bind()
への呼び出しです。インクルードファイルのどこかにusing namespace std
コードスニペットがあるようです。私たちは、これらのusing namespace std
が使用されている場所を見つけて削除することができますが、これを行うにはより良い方法がありますか?std :: bindとwinsock.hバインドの混乱
答えて
::bind()
を使用するように呼び出しを変更して、グローバル名前空間を指定することができます。
はい、これは残念です。
問題はソケットバインド()関数は、この署名を持っていることである:そう
int bind(int, const sockaddr*, socklen_t);
で呼び出し私はhttp://gcc.gnu.org/ml/libstdc++/2011-03/msg00143.htmlで説明したように、あなたが正確に右引数の型を使用しない限りstd::bind
テンプレートが良く一致しています非constポインタを使用する例では、 可変長テンプレートstd :: bindがよりよく一致することがわかります。第3引数がsocklen_t以外の整数型の場合は、同じことが に起こります。
私は最初の引数は「ソケット状」、私はis_integral
を使用して定義されているとあれば、過負荷セットからstd::bind
を削除することによって、この曖昧さを防ぐために、GCCのstd::bind
に準拠した拡張機能を追加しましたので、あなたのコードは、GCCで動作しますis_enum
。しかし、それは他の実装では役に立ちません。 using namespace std;
を削除
はとにかく良いアイデアですが、たまたまbind()
への非修飾呼び出しがまだ引数依存の照合によりstd::bind
を見つけることができる、名前空間std
(例えばstd::size_t
など)で定義された型を使用するので、完全には十分ではないかもしれません。ジョナサン・ポッターの答えは、適切な機能を確実に得るための最善の方法です:::bind
としてください。
+1 –
- 1. Boost :: bindとstd :: copy
- 2. BACKBONE.JSコレクションこの混乱をバインド
- 3. std :: bindとoverloaded関数
- 4. バッチファイルコードとの混乱
- 5. NSindexpathforselectedrowとの混乱
- 6. System.ApplicationIdとの混乱。
- 7. GL_MAX_TEXTURE_SIZEとの混乱
- 8. Python:urljoinとの混乱
- 9. C++ - 演算子の混乱の混乱
- 10. Cでのstd :: bindのエミュレート
- 11. 事業部の混乱混乱
- 12. 出力の混乱
- 13. ポインタの混乱 - C++
- 14. std :: bindとstd :: functionとがClangでクラッシュする
- 15. カウントのクエリとの混乱
- 16. Javaのインタフェースとの混乱
- 17. ASP.NETとのサーバーサイドイベントの混乱
- 18. コードとの混乱のレール
- 19. 混乱
- 20. 混乱
- 21. 混乱
- 22. 混乱、
- 23. 混乱
- 24. ラッチとフリップフロップの混乱
- 25. ListViewアダプターとの混乱
- 26. スタティックセルとダイナミックセルの混乱
- 27. Entity Frameworkコンテキストとの混乱
- 28. JavaScriptスコープとの混乱
- 29. ソケットとポートの混乱
- 30. ポインタと配列の混乱
名前空間は楽しいものではありませんか? –
いいえ、削除してください。 – inf
'using namespace std'を削除してください。そうしないと別の名前で将来同じ問題が発生します。理由を説明するために – juanchopanza