Boost-源碼分析筆記5-remove-bounds

喜歡這篇文章嗎?喜歡的話去看博主的置頂博客,即可依據分類找到此文章的原版得到更好的體驗,

圖片及代碼顯示的問題,筆者深感抱歉,想要更好的體驗去原博文即可。


title: Boost 源碼分析筆記5 - remove_bounds
mathjax: true
date: 2020-03-17 16:14:10
categories: [c++筆記,Boost源碼分析筆記]
tags: [c++筆記,Boost源碼分析筆記]
keywords: [c++筆記,Boost源碼分析筆記]


remove_bounds

   這個模版元我還真沒猜出他的功能,話說怎麼可能有人想得到這個bounds指的是數組的bounds呢?這個模版元的功能是傳入一個數組,傳出他的內容,即將T[]映射爲T。注意: remove_bounds就是remove_extent。

template <class T> struct remove_extent{ typedef T type; };

#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
template <typename T, std::size_t N> struct remove_extent<T[N]> { typedef T type; };
template <typename T, std::size_t N> struct remove_extent<T const[N]> { typedef T const type; };
template <typename T, std::size_t N> struct remove_extent<T volatile [N]> { typedef T volatile type; };
template <typename T, std::size_t N> struct remove_extent<T const volatile [N]> { typedef T const volatile type; };
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) && !defined(__IBMCPP__) &&  !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
template <typename T> struct remove_extent<T[]> { typedef T type; };
template <typename T> struct remove_extent<T const[]> { typedef T const type; };
template <typename T> struct remove_extent<T volatile[]> { typedef T volatile type; };
template <typename T> struct remove_extent<T const volatile[]> { typedef T const volatile type; };
#endif
#endif

   還是老樣子,數組就特判掉,然後返回其頭,否則就返回他的本身。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章