Boost 原始碼分析筆記2 is array

2021-10-04 03:30:37 字數 1820 閱讀 3911

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

title: boost 原始碼分析筆記2 - is_array

mathjax: true

date: 2020-03-17 15:19:27

categories: [c++筆記,boost原始碼分析筆記]

tags: [c++筆記,boost原始碼分析筆記]

keywords: [c++筆記,boost原始碼分析筆記]

要先看下面的筆記,才能看懂此篇。

is array的實現非常簡單,我們先假設所有的都不是array,即如第四行所示,然後利用偏特化,特判掉所有的array即可,讓他們繼承true_type,這樣我們在使用的時候用::value即可判斷。

#if defined( __codegearc__ )

template

<

class

t>

struct is_array :

public integral_constant<

bool

,__is_array

(t)>

;#else

template

<

class

t>

struct is_array :

public false_type

;#if !defined(boost_no_array_type_specializations)

template

<

class

t, std::size_t n>

struct is_array>

:public true_type

;template

<

class

t, std::size_t n>

struct is_array[n]>

:public true_type

;template

<

class

t, std::size_t n>

struct is_array[n]>

:public true_type

;template

<

class

t, std::size_t n>

struct is_arrayvolatile

[n]>

:public true_type

;#if !boost_workaround(__borlandc__, < 0x600) && !defined(__ibmcpp__) && !boost_workaround(__dmc__, boost_tested_at(0x840))

template

<

class

t>

struct is_array]>

:public true_type

;template

<

class

t>

struct is_array>

:public true_type

;template

<

class

t>

struct is_arrayvolatile

>

:public true_type

;template

<

class

t>

struct is_array>

:public true_type

;#endif

#endif

Boost 原始碼分析筆記1 remove cv

remove cv 這個模版類能夠幫我們去掉型別的const,他的實現很簡單,即使用模版元技術 template class t struct remove cv template class t struct remove cv template class t struct remove cv ...

Boost 原始碼分析筆記8 any

喜歡這篇文章嗎?喜歡的話去看博主的置頂部落格,即可依據分類找到此文章的原版得到更好的體驗,title boost 原始碼分析筆記8 any mathjax true date 2020 03 17 16 55 58 categories c 筆記,boost原始碼分析筆記 tags c 筆記,boo...

boost 原始碼 ref 庫分析

引用檔案 boost ref.hpp 一般情況下,泛型演算法中的函式物件,傳值語義是可行的,但是也有很多特殊情況,作為引數的函式物件拷貝代價過高 具有複雜的內部狀態 或者不希望拷貝物件 內部狀態不應該被改變 甚至拷貝是不可行的 noncopyable,單件 boost.ref應用 模式,引入物件引用...