亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: T[]類型模版特化? [打印本頁]

作者: Frahm    時間: 2013-05-21 19:10
標(biāo)題: T[]類型模版特化?
本帖最后由 Frahm 于 2013-05-21 20:32 編輯
  1. template<typename T>
  2. struct remove_all_extents {
  3.   typedef T type;
  4. };

  5. template<typename T>
  6. struct remove_all_extents<T[]> { //關(guān)鍵這里
  7.   typedef typename remove_all_extents<T>::type type;
  8. };

  9. template<typename T, size_t N>
  10. struct remove_all_extents<T[N]> {
  11.   typedef typename remove_all_extents<T>::type type;
  12. };
復(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