私は非常に大きなプロジェクトで作業しています。あるファイルでは、コンパイル時にエラーが発生しました。コンパイラは、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. std :: bindバリデーションテンプレートとバインドされた引数とプレースホルダー
- 2. Boost :: bindとstd :: copy
- 3. BACKBONE.JSコレクションこの混乱をバインド
- 4. std :: bindとoverloaded関数
- 5. std :: bindコンパイルエラーgcc
- 6. Bind std :: function error
- 7. std :: bindをstd :: bindで使用する:コンパイルエラー(暗黙のキャスト)
- 8. NSindexpathforselectedrowとの混乱
- 9. Python:urljoinとの混乱
- 10. GL_MAX_TEXTURE_SIZEとの混乱
- 11. System.ApplicationIdとの混乱。
- 12. バッチファイルコードとの混乱
- 13. std :: bind on call operator
- 14. C++ - 演算子の混乱の混乱
- 15. std :: functionとstd :: mapでstd :: bindを使う方法
- 16. 事業部の混乱混乱
- 17. ポインタの配列との混乱
- 18. Cでのstd :: bindのエミュレート
- 19. VUEとvuetify混乱
- 20. クラス組成混乱
- 21. 出力の混乱
- 22. ポインタの混乱 - C++
- 23. std :: bindをstd :: visitで使用する
- 24. コードとの混乱のレール
- 25. カウントのクエリとの混乱
- 26. Javaのインタフェースとの混乱
- 27. ASP.NETとのサーバーサイドイベントの混乱
- 28. Cコンパイラの混乱
- 29. std :: bindとstd :: functionとがClangでクラッシュする
- 30. C++セマフォの混乱?
名前空間は楽しいものではありませんか? –
いいえ、削除してください。 – inf
'using namespace std'を削除してください。そうしないと別の名前で将来同じ問題が発生します。理由を説明するために – juanchopanza