私はヘッダーファイルを持っています。その機能は、SFINAEの成功に大きく依存しています。現時点ではg++ 4.6
として期待通りに動作します。私はそれを仮定すれば、私のコードはすべてのコンパイラ(C++ 03コンパイラ)と同じ方法でシームレスに動作するでしょうか? はになりませんので、コンパイラエラーが発生し、コードフローが黙って変更されることがあります。C++(03)SFINAEアスペクトコンパイラは独立していますか?
答えて
はい、SFINAEを使用して正しく機能することができます。
コンパイルに失敗した場合は、最終的には不適合で、すべてのベットはオフになっています。
バグのない100%標準準拠のコンパイラはありますか? :P –
@VJo:SFINAEが動作しないのはバグ以上のことです。 –
しかしそれは合理的な点です。まさに「SFINAEは、すべてのベットがオフになっている非準拠のコンパイラを除いて動作します」と言うことができます。「2フェーズルックアップは、すべてのベットがオフになっている非適合コンパイラを除いて動作します。残念ながら、私たちの多くはTNCCWABAO:Visual C++を扱わなければなりません。 「これは、主要なコンパイラベンダーが動作させることができない2フェーズルックアップのような領域ですか?」と尋ねることは合理的だと思います。これはiammalindが尋ねたことではなく、 "C++ 03準拠"を明確にしましたが、準拠しているコンパイラがほとんど存在しないことを認識していない可能性があります。 Ahemの '輸出'。 –
SFINAEの成功に依存するため、SFINAEが正常に渡されたことを確認するには、static_assert
(またはBOOST_STATIC_ASSERT
)を使用する必要があります。
コードが上のすべてのコンパイラをうまくいくかどうかは知りませんが、特定のコンパイラは、特定のSFINAEの予想される出力を生成するために失敗した場合は、静的アサートがコンパイルを失敗していました。
残念ながら、 'asserts'を使用しても問題は解決しません。私が知りたいのは、C++ 03準拠のコンパイラであれば、SFINAEは正確に同じ方法で動作するかどうかです。 – iammilind
- 1. C++ stdライブラリのプラットフォームは独立していますか?
- 2. Cリンクライブラリから独立してビルド
- 3. は独立して
- 4. .NETで独立したC++ライブラリを実行しています
- 5. slideToggleは独立してリンクします
- 6. Cの独立ランダムジェネレータ
- 7. NSDateはタイムゾーンから独立していますか?
- 8. サービスはアクティビティライフサイクルから独立していますか?
- 9. `FragmentManager`はアクティビティライフサイクルから独立していますか?
- 10. AccessデータベースはMS Accessアプリケーションから独立していますか?
- 11. NutchはローカルモードでHadoopとは独立していますか?
- 12. チェックボックスは、独立して
- 13. ニューラルネットワーク層のユニットは独立していますか?
- 14. Eclipseのclasspath、junit.jar、import org.junit文は独立していますか?
- 15. DialogFragmentオリエンテーションはメインアクティビティオリエンテーションから独立しています
- 16. Runtime.getRuntime()。exec()プラットフォームは独立していますか?
- 17. RubyのMarshallフォーマットアーキテクチャとRubyバージョンは独立していますか?
- 18. linux/input.hのキーコードのレイアウトは独立していますか?
- 19. Javaバイトコードの位置は独立していますか?
- 20. 独立した不安定な独立したアニメーションに反応しますか?
- 21. C++関数の独立和
- 22. C#アプリケーションとは独立してPowershellスクリプトを実行する
- 23. CollectionViewは、項目を互いに独立してスクロールします。
- 24. コンパイラの独立したC++プロパティ
- 25. Apacheのラクダのルート展開 - 独立していますか?
- 26. ajaxリクエストの独立したサーバーセッションを確立しますか?
- 27. Python 2のパラメータは独立しています
- 28. 別のCプロセスから新しい独立プロセスを作成します。
- 29. VueJSカスタムドロップダウンボタンは互いに独立して動作しません
- 30. JavaFXの回転NumberAxisは独立して
すべてのコンパイラはいつからですか? "All"はかなり大きいです... –
@OliCharlesworth、編集私はC++ 03準拠のコンパイラを意味しました。 – iammilind
SFINAEだけではないという疑いがあります。もちろん、SFINAEは動作する必要があります。しかし、コンパイラのサポートが変わるところがあるかもしれません(メンバ関数の部分的な専門化を念頭に置いてあります)。 – sehe