2011-03-23 110 views

回答

9

Boost Coding Guidelines for Integral Constant Expressions的摘錄:

不要使用整型常量表達式,邏輯運算符;改爲使用模板元編程。

報頭包含了一些解決辦法方案,這符合邏輯運算符的作用,例如,而不是:

INTEGRAL_CONSTANT1 || INTEGRAL_CONSTANT2

用途:

::boost::type_traits::ice_or<INTEGRAL_CONSTANT1,INTEGRAL_CONSTANT2>::value

理由:許多編譯器(特別是Borland和Microsoft編譯器)傾向於不認可涉及邏輯運算符的整型常量表達式作爲真正的整型常量表達式。這個問題一般只在積分常量表達式嵌套在模板代碼內部時才顯示出來,並且很難再現和診斷。

所以我會說從來沒有在一個兼容的編譯器。 (但是如果你需要支持不符合規範的編譯器,請使用它。)

+0

「特別是Borland和**微軟**編譯器」哦,噓......! VS210在這裏。 :|感謝您提供該片段! – Xeo 2011-03-23 04:34:07

+1

@Xeo:沒問題。很遺憾他們沒有列出編譯器,但我真的懷疑VC2010需要它。 – GManNickG 2011-03-23 04:39:05

+3

@Xeo - 它們肯定意味着VC6,它被廣泛的使用和非常標準的臭名昭着。 VS2010沒有這樣的問題。 – 2011-03-23 17:53:34

相關問題