2
我剛剛遇到std :: tr1 :: extent模板,它讓我感到困惑。我從來沒有處理過我的生活中的數組類型參數,所以我不明白它們是如何工作的。因此,考慮到從GCC type_traits
編譯器如何選擇具有數組特徵的模板特性?
template<typename _Tp, unsigned _Uint, std::size_t _Size>
struct extent<_Tp[_Size], _Uint>
template<typename _Tp, unsigned _Uint>
struct extent<_Tp[], _Uint>
代碼沒有編譯器的專業化之間如何選擇?我應該輸入extent
以選擇第二個類型?
所以第二個將被選擇的任何時間有一個在聲明空的方括號([])? – vava 2009-10-22 10:49:08
是的,確實如此。這是因爲T []與T [N]不匹配。 – 2009-10-22 10:55:12
Hm,看上去儘管有邏輯,當'extent <_Tp [_Size],_UInt>'匹配'extent'時,'_Tp'獲得'int [2]'而不是'int [1]'。但'(int [1])[2]'似乎更直觀...... –
vava
2009-10-22 11:08:06