喜歡這篇文章嗎?喜歡的話去看博主的置頂部落格,即可依據分類找到此文章的原版得到更好的體驗,
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應用 模式,引入物件引用...