質問によれば、人々が通常の条件文よりも構造バージョンを使用する理由はありますか?なぜboost :: ice_orを||の代わりに使うのですか? enable_ifの&&の代わりにboost :: ice_andを使用しますか?
5
A
答えて
9
Boost Coding Guidelines for Integral Constant Expressionsからの抜粋:
整数定数式に論理演算子を使用しないでください。代わりにテンプレートのメタプログラミングを使用してください。
ヘッダは、例えば、論理演算子の役割を果たし、回避策テンプレートの数が含ま代わりに:
INTEGRAL_CONSTANT1 || INTEGRAL_CONSTANT2
使用:
::boost::type_traits::ice_or<INTEGRAL_CONSTANT1,INTEGRAL_CONSTANT2>::value
理由:多くのコンパイラ(特にBorlandコンパイラとMicrosoftコンパイラ)は、論理演算子を含む整数定数式を本物の整数定数式として認識しない傾向があります。この問題は一般に、整数定数式がテンプレートコードの深くにネストされ、再現と診断が難しい場合にのみ表示されます。
私は決して準拠したコンパイラではないと言います。 (しかし、準拠していないコンパイラをサポートする必要がある場合は、それを使用してください)
関連する問題
- 1. なぜAssembly.LoadFromの代わりにAssembly.LoadFileを使用しますか?
- 2. boost :: shared_arrayの代わりにstd :: shared_ptr <std::vector>を使用するのは意味がありますか?
- 3. なぜVaadinでVerticalLayoutの代わりにFormLayoutを使用しますか?
- 4. pseqの代わりにseqを使用できますか?
- 5. なぜmemo.LineはTStringListの代わりにTStringsを使用しますか?
- 6. WCF/Silverlight:なぜクライアントの代わりにChannelFactoryを使用するのですか?
- 7. なぜRabbitMQの代わりにCeleryを使用するのですか?
- 8. なぜJavaの代わりにClojureを使用するのですか
- 9. RELEASEの代わりにNDEBUGを使用するのはなぜですか?
- 10. Captchaの代わりにReferrerを使用していますか?
- 11. OnActionExecutingの代わりに何を使用しますか? ASP.NET MVC
- 12. Polymorphic Associationsの代わりに何を使用しますか?
- 13. Androidリソースの代わりにFile.length()を使用しますか?
- 14. スタティックライブラリエフェクトメモリの代わりに共有ライブラリを使用しますか?
- 15. Comic Sansの代わりに "スケッチフォント"を使用しますか?
- 16. Html.TextBoxはModelの代わりにRequest.Paramsを使用しますか?
- 17. Collections.newSetFromMapの代わりにJDK 1.5を使用しますか?
- 18. セレクタの代わりにブロックオブジェクトを使用していますか?
- 19. XSLTの代わりにScalaを使用しますか?
- 20. translate3dの代わりにcss3を使用しますか?
- 21. VB6 COM +コンポーネントの代わりにPHPを使用しますか?
- 22. MySQLの代わりにJSONを使用していますか?
- 23. GETの代わりにオブジェクトを使う
- 24. ptの代わりにemを使用
- 25. Submitの代わりにButtonを使用
- 26. expand.gridの代わりにouterを使用
- 27. なぜ代わりに+
- 28. WPFブラウザアプリケーションをASP.NETの代わりに使用できますか?
- 29. サテライトアセンブリの代わりにリソースファイルを使用
- 30. JqGrid:editurlの代わりに$ .ajax()を使用
"特にBorlandと** Microsoft **コンパイラ" Oh sh ...!ここでVS210。 :|そのスニペットをお寄せいただきありがとうございます! – Xeo
@ Xeo:問題ありません。彼らがコンパイラをリストアップしていないことは残念ですが、VC2010がそれを必要とするのは本当に疑問です。 – GManNickG
@ Xeo - VC6はあまりにも広く使われていて、非常に標準的であることで有名です。 VS2010にはこのような問題はありません。 –