亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
T[]類型模版特化?
[打印本頁]
作者:
Frahm
時間:
2013-05-21 19:10
標(biāo)題:
T[]類型模版特化?
本帖最后由 Frahm 于 2013-05-21 20:32 編輯
template<typename T>
struct remove_all_extents {
typedef T type;
};
template<typename T>
struct remove_all_extents<T[]> { //關(guān)鍵這里
typedef typename remove_all_extents<T>::type type;
};
template<typename T, size_t N>
struct remove_all_extents<T[N]> {
typedef typename remove_all_extents<T>::type type;
};
復(fù)制代碼
這里remove_all_extents的作用就是獲取任意維數(shù)組的基本類型。
我不明白的是第一個特化那里,T[]有什么用?我試過了,去掉那個特化效果也一樣。
還有T[]這里不指明維數(shù)的話可以嗎?而且貌似沒有退化為指針類型,并且根本沒有進入遞歸。
那么這么實現(xiàn)是什么用意呢?還是我哪里搞錯了呢?
剛試了下:
std::cout << typeid(int[]).name() << '\n';
輸出:
int [0]
然而 int a[0]是編譯通不過的,那么int [0]是什么類型呢?
作者:
Frahm
時間:
2013-05-21 20:40
本帖最后由 Frahm 于 2013-05-21 20:40 編輯
問到答案了,摸板中T[]的類型不是T[0],而是incomplete type, 沒有維數(shù)聲明的不完整類型。
具體見:
http://stackoverflow.com/questio ... late-specialization
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2