2012-11-16 20 views
0

我想知道是否真的值得包含type_traits頭文件來獲取枚舉的基礎類型。我創建了一個Flags類,我希望儘可能靈活,所以我使用std::underlying_type<T>::type來獲取類型。例如,我可以使用int,但如果用戶想要使用多於32個標誌,該怎麼辦?所以我的問題是,在頻繁使用時,是否可以顯着減慢編譯時間?值得僅包含type_traits來獲取枚舉的基礎類型嗎?

+2

使用和不使用它幾次測量編譯。總的來說,它幾乎不會減慢速度。 – chris

回答

1

如果你需要std :: underlying_type,那麼你需要它。沒有意義寫你自己的或損害你的代碼。如果你想最小化編譯時間,然後在頭文件中前向聲明模板類,並僅在.cxx文件中實用type_traits.cxx,這樣你就不必在不同的文件中繼承不需要的頭文件。

+0

這個問題是我沒有任何cpp文件,只有頭文件(它是一個模板類),因此它將包含在系統中的幾乎所有文件中。 – HemoGoblin

+0

您不能對類型特徵使用前向聲明技巧。類型'std :: underlying_type :: type'必須在使用的地方看到,它不像一個可以完成調用的函數,並期望鏈接器找出地址。 –