不使用#if
,stdint.h
,inttypes.h
,或編譯器特定的擴展(比非標準固有類型等),但使遊離使用所有其他的C++特性(包括C++ 11 type_traits
例如)是有可能寫出具有當且僅當有一個特定於實現的類型,提供的精度至少64位,並以其他方式產生一個編譯時間的檢測64位整數型式而不預處理器或stdint.h
typedef {some implementation-specific type} int_least64;
效果代碼錯誤?
的構建體應檢測到可能具有期望的性質(例如,在MSVC __int64
++)非標準固有類型以及標準酮(long
,long long
)。如果有幾種類型符合要求,它應該選擇最合適的資格。理想情況下,在enable_if
中使用以及只是出錯並檢測任意大的整數(例如,一些編譯器現在提供__int128
)是可以概括的。
爲什麼你不直接使用? –
「檢測」是什麼意思?這包括你不知道的類型嗎? C++不支持反射。 –
這不可能或不可取。 –