久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

boost源码剖析之:Tuple Types(rev#2)

發布時間:2025/3/21 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 boost源码剖析之:Tuple Types(rev#2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

boost源碼剖析之:Tuple Types(rev#2)

?

劉未鵬(pongba)

C++的羅浮宮(http://blog.csdn.net/pongba)

?

Note:?并非新作,04年曾放在blog上,后來刪掉了,不過網上到處有轉載。這是修改之后的版本。

?

動機[1]

假設你有這樣一個函數:它接受兩個整型數據并返回它們整除的結果,像這樣:

?

int?DevideInts(int?n,int?d)

{

???return?n/d;

}

?

但是我們可能需要更多信息,比如,余數。函數的返回值已被占用,我們可以為函數加一個參數:

?

int?DevideInts(int?n,int?d,int& Remainder)?

{

????Remainer=n%d;?

????return?n/d;

}

?

但是這樣的函數形式未免有些拖沓丑陋。我們可以使用std::pair<>來定義函數的返回值類型(顧名思義,std::pair<>可以將兩個值湊成一對),像這樣:

?

std::pair<int,int> DevideInts(int?n,int?d)

{

????return?std::pair<int,int>(n/d,n%d);

}

?

這是個可行的方案。簡潔,優雅。

然而,這個方案只能提供兩個返回值的捆綁,如果現在需要返回三個int呢?唔...你可能很快想到這樣組織代碼:

?

std::pair<int,std::pair<int,int> > someFunc();

?

的確,這也能夠工作,但是畢竟不夠精致!如果返回值再增加,代碼將會愈發丑陋不堪。另一個可行的方案是自己定義一個結構來保存三個乃至更多值,然而隨著不同函數的需要你可能需要定義各種不同的類似這樣的結構,這太費神了。

所以,我們需要的是一個高度可復用的,能夠用來保存任意型別的任意多個變量的類——Tuple Types(Tuple的意思是“元組,數組”)。正如你所想象的,泛型正是提供代碼復用的最佳手段,它將型別信息抽象出來,直到用戶真正使用那些代碼時,型別信息才得以落實(所謂“具現化”)。

Boost庫提供了所謂的Tuple Types,它沒有std::pair的限制,于是你可以寫:

?

//tuple<>目前能夠支持多達10個模板參數

boost::tuple<int,int,int> someFunc();

?

事實上tuple能夠提供的不止這個,tuple對IO流的支持能夠允許你寫這樣的代碼:

?

tuple<int,int,int> t(8,9,10);

std::cout<<t;??//輸出(8??9??10)

?

tuple甚至還支持類似的流控制,像這樣:

?

std::cout << tuples::set_open(‘[‘)

<< tuples::set_close(‘]’)

<< tuples::set_delimiter(‘,’)

<< t;

//輸出[8,9,10]

?

好了,你可能已經不耐煩了,畢竟,以上的內容非常淺顯。然而我必須要告訴你這些,因為你首先得知道tuple的設計目的才能夠去了解它。好在這個枯燥的過程已經結束了。深吸一口氣,我們去看一看tuple的設計細節和最本質的東西——源代碼。

?

設計目標

首先,了解tuple的設計目標十分重要。上面所講的只是一個總的設計目標。下面兩個細節設計目標才是真正需要和體現技術的地方(并且考慮它們如何能夠最佳實現是非常有趣的事情,當然,在你的種種考慮之后,你得承認,Boost庫的設計無疑是最精致和高效的),容我向你闡述它們:

?

tuple中的數據成員的個數應該具有某種動態特性。具體的說就是如果你像這樣具現化tuple: tuple<int,int> t。則t某種程度上應該只需要sizeof(int)*2大小的內存來存放它的數值,不應該有多余的內存分配。而如果是tuple<int,int,int> t;則sizeof(t)某種程度上應該為sizeof(int)*3。當然,你可以利用模板偏特化來實現這一點——為提供不同模板參數個數的tuple實現不同的偏特化版本(也就是說,對提供了N個模板參數的tuple準備的偏特化版本中具有N個數據成員)——但是,想想這樣做的代碼數量吧!你也可以使用動態分配底層容器的策略,然而那會帶來額外的負擔,顯然不如將數據直接放在tuple對象里,況且底層容器又該如何設計呢?事實上,boost::tuple并沒有使用以上任何一種手法,它使用了一種類似Loki庫[2]里的TypeList設施的手法來定義它的底層容器,這種精致的手法利用了某種遞歸的概念,極大的減少了代碼量。后面我會為你介紹它。

tuple?必須提供某種途徑以獲取它內部保存的數值。類似的,通過某種編譯期的遞歸,Boost極其巧妙地達到了這個目標。遺憾的是,由于技術上的原因,當你需要獲取第N個數據時,你所提供的N必須是編譯期可計算出的常量。這也體現出C++泛型缺少一些運行期的特性——是的,C++泛型幾乎完全是編譯期的。

?

其實,雖然上面我只為你描述了兩個設計目標,但是實作時仍會有各種小問題出現。下面的源碼剖析中我會一一為你解惑。

好吧,在你發出抱怨聲之前,我還是快點轉入我們的主題:

?

boost::tuple源碼剖析

boost::tuple的實現有許多精妙之處,真是千頭萬緒不知從何說起。還是從一個最簡單的應用展開吧:

?

//請記住它,后面我們將一直圍繞這個例子

boost::tuple<int,long,bool> myTuple(10,10,true);

?

以上簡單的代碼的背后其實發生了很多事,了解了這些事你幾乎就了解了關于tuple的一大半奧秘。首先我們肯定想知道tuple的聲明是什么樣子的,在boost/tuple/detail/tuple_basic.hpp中聲明了它,其中也包括tuple幾乎所有的實現:

?

template?<?class?T0 = null_type,?class?T1 = null_type,?class?T2 = null_type,

class?T3 = null_type,?class?T4 = null_type,?class?T5 = null_type,

class?T6 = null_type,?class?T7 = null_type,?class?T8 = null_type,

class?T9 = null_type > //?null_type是個空類

class?tuple;??//?注意這個聲明的所有模板參數都有缺省值

?

下面是boost::tuple的定義(也摘自boost/tuple/detail/tuple_basic.hpp):

?

????template?<class?T0,?class?T1,?class?T2,?class?T3,?class?T4,

???????????????class?T5,?class?T6,?class?T7,?class?T8,?class?T9>

????class?tuple :

??????public?detail::map_tuple_to_cons<T0, T1, T2, T3, T4,

T5, T6, T7, T8, T9>::type

{

// tuple的定義體十分簡單,其中是若干構造函數(將參數轉交給基類)和模板賦值操作符

??…

}; //?為了凸顯重點,以下先講tuple的基類

?

其實tuple本身的定義并無奧秘和技巧可言,所有秘密都藏在它的基類里面,tuple只是將參數轉交給基類處理。下面我為你剖析它的基類:

?

基類大廈的構建

?

構建大廈的腳手架——map_tuple_to_cons<>

在我們給出的極其簡單的應用代碼中:tuple<int,long,bool> myTuple(10,10,true);其實相當于:

?

tuple<int,long,bool,

null_type,null_type,null_type,null_type,

null_type,null_type,null_type

>?myTuple(10,10,true);

?

這是因為tuple的定義中所有模板參數都有缺省值,所以你沒有給出值的模板參數自然會被編譯器認為是缺省值null_type。這樣T0,T1,...,T9分別是int,long,bool,null_type,.....null_type。你發現基類的表現方式非常怪異——是一個map_tuple_to_cons<>中的內嵌型別::type。很自然,你該知道map_tuple_to_const<>的定義,下面就是:

?

????template?<class?T0,?class?T1,?class?T2,?class?T3,?class?T4,

???????????????class?T5,?class?T6,?class?T7,?class?T8,?class?T9>

????struct?map_tuple_to_cons

????{

????//?cons<>是數據的容器,也是所有奧秘所在

????1?typedef?cons<

T0, //第一個參數T0被孤立出來

?????????typename?map_tuple_to_cons< //剩下的模板參數后跟一個null_type進入下一輪

T1, T2, T3, T4, T5,T6, T7, T8, T9,?null_type

>::type

???????> type;

};

?

以及它的一個特化版本:

?

template?<>??//這個特化版本是終止某種遞歸式的自包含定義的關鍵,后面你會明白

struct?map_tuple_to_cons<null_type, null_type, null_type, null_type,

null_type, null_type, null_type, null_type,

null_type, null_type>

???{

??????2?typedef?null_type type;

};

?

就這么簡單。但是它的機理卻并非那么明顯:上面已經知道T0,T1,...,T9被推導為int,long,bool,null_type,...,null_type(其中省略號表示null_type,下同)。因此tuple的基類:

?

detail::map_tuple_to_cons<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type

?

被推導為

?

map_tuple_to_cons<int,long,bool,null_type,...,null_type>::type

?

而根據map_tuple_to_cons的定義1,這其實就是:

?

cons<?int,

typename?map_tuple_to_cons<long,bool,null_type,...,null_type>::type

>

?

其中的
typename?map_tuple_to_cons<long,bool,null_type,...,null_type>::type
再一次涉及1處的typedef,因而它被推導為

?

cons<long,typename?map_tuple_to_cons<bool,null_type,...,null_type>::type>

?

所以現在看看基類的定義的形式被推導成為的樣子吧:

?

cons<int,

cons<long,

typename?map_tuple_to_cons<bool,null_type,...,null_type>::type

>?

>?

?

看出端倪了嗎?其中
typename?map_tuple_to_cons<bool,null_type,...,null_type>::type
仍然使用1處的typedef,從而為

cons<bool,

typename?map_tuple_to_cons<null_type,null_type,...,null_type>::type

>?

?

現在,我們推導至這樣一種遞歸嵌套的模式:

?

cons<int,

cons<long,

cons<bool,

typename?map_tuple_to_cons<null_type,...,null_type>::type

>?

>?

>?

?

好了,該是結束這場游戲的時候了,你應該看出來了,map_tuple_to_cons<>準備了一個特化版本來作為這場類似繞口令的遞歸式包含的休止符。所以,以上的定義再作最后一重推導,使用2處的typedef,將
typename?map_tuple_to_cons<null_type,...,null_type>::type
推導為null_type,得到最終的形式:

?

cons<int,cons<long,cons<bool,null_type> > >?

//?這實際上只是為int,long,bool各分配一份空間

?

這就是tuple<int,long,bool>的基類!!現在,你應該可以類似地推導出:如果tuple的形式為tuple<int,long,bool,double>,則其基類為:

?

cons<int,cons<long,cons<bool,cons<double,null_type> > > >

?

這樣,隨著你給出的模板參數個數的不同(意味著你要求保存的數據的個數不同,tuple的基類竟能夠呈現出某種動態的特性(用戶提供的模板參數個數的變化(反映用戶需要保存的數據的個數)導致cons<>容器的嵌套層數的變化,進而導致tuple的底層內存的分配量也作相應變化)

map_tuple_to_cons<>以一種遞歸的方式不斷將它的第一個模板參數割裂出來,并使tuple的基類呈現像這樣的形式:

?

cons<T0,cons<T1,cons<T2,cons<T3,... ... > > > >

?

這種遞歸當map_tuple_to_cons<>的模板參數都為null_type時才恰好停止,由于map_tuple_to_cons<>不斷將第一個模板參數取出,并將剩余的參數在尾部添一個null_type再傳遞下去。所以當用戶給出的模板參數全部被分離出來時,map_tuple_to_cons<>所接受的參數就全部都是null_type了,于是使用其特化版本,其中將內嵌型別type typedefnull_type。從而結束這場遞歸。

map_tuple_to_cons<>其實在tuple的定義中充當了十分重要的角色,如果沒有它的介入,難道還有更簡潔美妙的方式來達到這個目的嗎?

?

構建大廈的磚石——cons<>

現在,你一定非常想看一看cons<>的定義,下面就是:

?

template?<class?HT,?class?TT>

???struct?cons {

?????typedef?HT head_type; //?這是個用戶提供的型別

?????typedef?TT tail_type;???//?這通常是個cons<>的具現體

?????????????????????????????//?以上兩個typedef很重要,并非可有可無

?????typedef

???????typename?detail::wrap_non_storeable_type<head_type>::type

stored_head_type;

3???stored_head_type?head; //?這是其中第一個數據成員

4???tail_type?tail;????????????//?第二個數據成員

?...????????????????????????//?其成員函數將在后面解釋,此處先略去

};

// cons<>還有一個偏特化版本:

template?<class?HT>

???struct?cons<HT, null_type> {

typedef?HT head_type;

?????typedef?null_type tail_type;

?????typedef?cons<HT, null_type> self_type;

?????typedef?typename

???????detail::wrap_non_storeable_type<head_type>::type stored_head_type;

?

stored_head_type?head;

//?注意,不像上面的主模板,這里沒有tail成員

?????... //?成員函數將在后面解釋

};

?

根據cons<>的定義顯示它有兩個數據成員:34兩處描述了它們,對于第一個數據成員的型別stored_head_type,往它上面看一行,它被typedef為:

?

detail::wrap_non_storeable_type<head_type>::type

//?而head_type又被typedef為HT

?

這又是個什么玩意?其實它只是用來偵測你是否使用了void型別和函數類型(所謂函數型別就是像void(int,int)這樣的型別,它表示接受兩個int型參數返回void的函數的型別,注意,它不同于函數指針型別,后者形式為void(*)(int,int),void(*f)(int,int)定義了一個函數指針f,而void f(int,int)無疑是聲明了一個函數f)來具現化tuple,如果是的,那它得采取特殊手段,因為這兩種型別不能像int那樣定義它們的變量(你見過void val;這樣定義val變量的嗎)。“但是”你急忙補充“這本就應該不能通過編譯呀?”是的,寫void?val;這樣的語句不應該通過編譯,寫tuple<void> myTuple;這樣的語句也應該不能通過編譯。但是,typedef?void?VoidType;這樣的typedef卻應該是能夠通過編譯的,所以typedef?tuple<void> voidTupleType;這樣的typedef也該能夠通過編譯。然而如果在cons<>里單純地寫上:

?

HT head;??//如果HTvoid則這將導致編譯錯誤

?

這個成員,則tuple<void>這樣的具現化肯定會惹惱編譯器(因為它將會發覺cons<>里試圖定義一個void型的變量)

所以,對于這種情況,boost使用了wrap_non_storeable_type<>,它的定義是這樣的:

?

template?<class?T>

struct?wrap_non_storeable_type {

typedef?typename?IF<?????????????// IF<>相當于編譯期的if...then...else

???????::boost::is_function<T>::value, //?如果為函數類型則特殊處理

non_storeable_type<T>, T??????//?如果不是函數類型則type就是T

?????>::RET type;

};

?

以及其特化版本:

?

???template?<>

struct?wrap_non_storeable_type<void> { //?如果為void型也特殊處理

?????typedef?non_storeable_type<void> type;?

???};

?

里面的non_storeable_type<>其實是函數型別void型別的外覆類,以使得它們可以合法的作為數據成員被定義。你不能將void?dataMember;作為數據成員,但你可以將non_storeable_type<void> wrappedData;作為成員。你不能將void?f(int,int)作為數據成員,但你可以將non_storeable_type<void(int,int)> wrapperdData;作為成員。但是,雖然這樣能夠使tuple<void>這樣的型別得以具現出來,然而你仍然不能擁有它們的對象,像tuple<void> myTuple;這樣的代碼仍然無法通過編譯,原因是non_storeable_type<>模板類是這樣定義的:

?

???template?<class?T>

class?non_storeable_type {

??????non_storeable_type();??//?僅有私有的構造函數,意味著不能擁有該類的對象實體

???};

?

一旦你以tuple<void>為型別定義了一個變量,則該類內部的成員須被初始化,而non_storeable_type<>的構造函數為私有,所以初始化失敗,產生編譯錯誤。

所有這些正符合void及函數型別的特性——能夠被typedef,卻不能擁有數據對象實體。(boost的實現者可真夠細心的)

好了,從細節中回過神來。我們通常顯然不會用void和函數型別來具現化tuple。所以,通常,cons<>內部的兩個數據成員的型別通常其實就是:

?

?????HT head;

?????TT tail;

?

現在回顧我們的示例代碼:tuple<int,long,bool> myTuple;tuple<int,long,bool>的基類為:

?

????cons<int,cons<long,cons<bool,null_type> > >

?

所以,最外層的cons<>的模板參數被推導為:

?

typename?HT=int,typename?TT=?cons<long,cons<bool,null_type> >

?

這樣,tuple<int,long,bool>的基類cons<int,cons<long,cons<bool,null_type> > >其實只擁有兩個成員:

?

int?head;

cons<long,cons<bool,null_type> > tail; //?注意這又是一個cons<>對象

?

tail成員又是cons<>的一個對象,不同的是tail的型別不同了——具現化cons<>的模板參數不同。可想而知,tail內部包含兩個成員:

?

long?head;

cons<bool,null_type> tail;

?

值得注意的是,第二個tail的型別匹配的是cons<>的偏特化版本,其中只有一個數據成員:

?

bool?head;

?

所以整個基類的內存布局其實就是cons<>的三重嵌套。三個head數據成員就是需要分配內存的主體。如果將這種布局擴展,大概就像這樣:

?

?

這種布局正像一種玩具——開始是一個盒子,揭開盒子其內部又是個更小的盒子,再揭,還是盒子...

現在,基類的內存布局已經展現在你面前。這一切其實就是由那個魔棒般的map_tuple_to_cons<>所造就的,它建造了這種嵌套式的結構。這樣構建的好處就是嵌套的重數可以由用戶給出的模板參數個數來控制。前者體現了底層內存的占用量(如果重數為N重,則只有N個head占用內存),后者體現用戶的需求量。這正是一種“按需分配”。

在基類的大廈構架完畢后,問題自然是,如何將材料填入這幢蜂窩般的大廈。這得從tuple的構造函數入手,下面我就帶你作一次跟蹤。

?

初始化的全過程

然而在跟蹤之前我們須了解tuple的構造函數,因為所有初始化參數由此進入:

?

???template?<class?T0,?class?T1,?class?T2,?class?T3,?class?T4,

??????????????class?T5,?class?T6,?class?T7,?class?T8,?class?T9>

???class?tuple :

????public?detail::map_tuple_to_cons<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type

???{

???public:

?????typedef?typename

???????detail::map_tuple_to_cons<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type

inherited; //?基類

?????typedef?typename?inherited::head_type head_type;

//?基類的head_type(通常即T0,見cons<>的定義)

?????typedef?typename?inherited::tail_type tail_type;

//?基類的tail_type(一般仍為一個cons<>)

????

?????//下面有十一個構造函數,我只給出兩個,其它類同,只不過參數個數增加而已

????tuple() {} //?這里也調用基類的默認構造函數

????

// access_traits<>的定義后面解釋

????tuple(typename?access_traits<T0>::parameter_type t0)

?????: inherited(t0, detail::cnull(),????????????// cnull函數返回null_type()對象

detail::cnull(), detail::cnull(), //?可將detail::cnull()看作null_type()

detail::cnull(), detail::cnull(),

detail::cnull(), detail::cnull(),

detail::cnull(), detail::cnull())

{ }

????tuple(typename?access_traits<T0>::parameter_type?t0,

????????typename?access_traits<T1>::parameter_type?t1) //增加了一個參數t1

????: inherited(t0, t1, detail::cnull(), detail::cnull(),

????????????????detail::cnull(), detail::cnull(), detail::cnull(),

????????????????detail::cnull(), detail::cnull(), detail::cnull())

{ }

????...

??};

?

其中構造函數的參數型別以access_traits<>來表現是有原因的,它的定義如下:

?

???template?<class?T>

struct?access_traits {

?????typedef?const?T& const_type;

?????typedef?T& non_const_type;

?????typedef?const?typename?boost::remove_cv<T>::type& parameter_type;

};

?

parameter_type正是在tuple構造函數中被用作參數型別的。先由remove_cv將T型別可能具有的const或volatile修飾符去掉,然后再加上const修飾符以及表示引用的符號&,就是parameter_type。舉個例子,如果我們給T0的模板參數為int,則typenameaccess_traits<T0>::parameter_type就是const int&。為什么要作這么麻煩的舉動,就是因為你可能會將常量或臨時對象作為參數傳遞給構造函數,而C++標準不允許它們綁定到非const引用。為什么要用引用型別作參數型別?自然是為了效率著想。

當然,如果你想直接在tuple內保存引用也可以,如果你將T0賦為int&,這時候parameter_type并不會被推導為int&&(引用的引用是非法的),原因是access_traits為此準備了一個偏特化版本,如下:

?

???template?<class?T>?struct?access_traits<T&> {

??????typedef?T& const_type;

??????typedef?T& non_const_type;

??????typedef?T& parameter_type;??

???};

?

如果T0本身是個引用,則對parameter_type的推導將使用該偏特化版本。不過你該會發現這個偏特化版本中的parameter_type被定義為T&而非const T&,這是因為,如果你的意圖是在tuple中保存一個int&,則出現在構造函數中的參數的型別就該是int&而非const int&,因為不能用const int&型別的參數來初始化int&型別的成員。

好吧,現在回到我們的例子,我們具現化tuple為tuple<int,long,bool>則該具現體的構造函數應該是這樣子:

?

A??tuple(){}

B??tuple(const?int& t0) : inherited(t0, detail::cnull(),...,detail::cnull()){}

C??tuple(const?int& t0,const?long& t1)

: inherited(t0,t1,detail::cnull(),...,detail::cnull())

{ }

D??tuple(const?int& t0,const?long& t1,const?bool& t2)

??: inherited(t0,t1,t2,detail::cnull(),...,detail::cnull())

{ }

E??tuple(const?int& t0,const?long& t1,const?bool& t2,const?null_type&?t3)

?:?inherited(t0,t1,t2,detail::cnull(),..)

{ } //?這不可用

...??//?其他構造函數以此類推

?

這樣一堆構造函數,有那些可用呢。事實上,你可以有以下幾種初始化方法:

?

tuple<int,long,bool> MyTuple; //ok,所有成員默認初始化,調用A

tuple<int,long,bool> MyTuple(10); //ok,第一個成員賦值為10,其它兩個默認初始化,調用B

tuple<int,long,bool> MyTuple(10,10);//ok,給第一第二個成員賦值,調用C

tuple<int,long,bool> MyTuple(10,10,true);//ok,給三個成員都賦初始值,調用D

?

在tuple的構造函數背后發生了什么事情呢?當然是其基類的構造函數被調用,于是我們跟蹤到cons<>的構造函數,它的代碼是這樣的:

?

???template?<class?HT,?class?TT>

struct?cons {

...

?????template?<class?T1,?class?T2,?class?T3,?class?T4,?class?T5,

????????????????class?T6,?class?T7,?class?T8,?class?T9,?class?T10>

?????cons( T1& t1, T2& t2, T3& t3, T4& t4, T5& t5,

???????????T6& t6, T7& t7, T8& t8, T9& t9, T10& t10 )

??????????:?head?(t1),?tail?(t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::cnull())

??{ }

...

};

?

現在假設我們這樣初始化一個tuple:

?

tuple<int,long,bool> MyTuple(10,11,true);

?

則調用tuple的D構造函數被喚起,并將三個參數傳給其基類,第一重cons<>將其head賦為10,再將剩下的參數悉數傳給其tail,后者又是個cons<>,它將它的head賦為11(注意,這時它接受到的第一個參數是11),然后將僅剩的true加上后面的九個null_type一股腦兒傳給它的tail—cons<bool,null_type>(最內層的cons<>)。cons<HT,null_type>這個偏特化版本的構造函數是獨特的,因為它只有head沒有tail成員,所以構造函數的初始化列表里不能初始化tail:

?

???template?<class?HT>

struct?cons<HT, null_type> {

...

????template<class?T1>

????cons(T1& t1,?const?null_type&,?const?null_type&,?const?null_type&,

????????const?null_type&,?const?null_type&,?const?null_type&,

????????const?null_type&,?const?null_type&,?const?null_type&)

????:?head?(t1) {} //?只初始化僅有的head

...

};

?

當參數被傳至最內層cons<>,一定是至少有尾部的九個null_type。這是因為如果你以N個模板參數來具現化tuple,則你初始化該tuple時最多只能提供N個參數,因為為N+i個參數準備的構造函數的第N+1至N+i個參數型別將推導為null_type(請回顧上面的各個構造函數,這是因為你沒有提供的模板參數都默認為null_type的緣故),而經過cons<>構造函數的重重“剝削”,直到最內層cons<>的構造函數被調用時,你給出的N個參數就只剩一個了(另外還有九個null_type)。所以這個偏特化版本的構造函數與上面的cons<>未特化版本中的并不相同。

這就是初始化的全過程。然而,事實上,在上例中,你不一定要將三個初始化參數全部給出,你可以給出0個1個或者2個。假設你這樣寫:

?

tuple<int,long,bool> MyTuple(10);

?

這將調用tuple的B構造函數,后者再將這唯一的參數后跟九個null_type傳給其基類—最外層的cons<>,這將使最外層的cons<>將其head初始化為10,然后—它將十個null_type傳給其tail的構造函數,而后者的head為long型數據成員,如果后者仍然使用上面給出的構造函數,則它會試圖用它接受的第一個參數null_type來初始化long?head成員,這將導致編譯錯誤,然而事實上這種初始化方式是語意上被允許的,對于這種特殊情況,cons<>提供了另一個構造函數:

?

???template?<class?T2,?class?T3,?class?T4,?class?T5,

??????????????class?T6,?class?T7,?class?T8,?class?T9,?class?T10>

?????cons(?const?null_type&?t1, //?當接受的第一個參數為null_type時

T2& t2, T3& t3, T4& t4, T5& t5,

????????????T6& t6, T7& t7, T8& t8, T9& t9, T10& t10 )

??????:?head?(),?tail?(t2, t3, t4, t5, t6, t7, t8, t9, t10, detail::cnull())

?????{}

?

如果提供的初始化參數“不夠”,十個參數將在cons<>的某一層(還不到最后一層)被“剝削”為全是null_type,這時將匹配cons<>的這個構造函數,它將head默認初始化(head(),而不是head(t1))。而cons<>的偏特化版本亦有類似的版本:

?

???cons(const?null_type&,

???????const?null_type&,?const?null_type&,?const?null_type&,

???????const?null_type&,?const?null_type&,?const?null_type&,

???????const?null_type&,?const?null_type&,?const?null_type&)

??: head () {}

?

這真是個隱晦繁復的過程,但愿你能理清頭緒。既然填充這幢基類“大廈”(cons<>)的材料(初始化tuple的參數)都能夠被安放到位。我們也得清楚如何再將它們取出來才是。這個“取”的過程又甚為精巧。

?

Tuple的取值過程

tuple允許你用這樣的方式取值:

?

someTuple.get<N>();??// get是模板函數

?

其中N必須得是編譯期可計算的常量。Boost庫的實現者不能實現這樣一個get版本——它允許你用一個變量指出想要獲取哪個元素:

?

someTuple.get(N);?????// N為變量-->錯誤

?

這個事實是有原因的,原因就在于get函數的返回值,你知道,用戶可以將不同形式的變量保存在tuple中,但是get函數是不能在運行期決定它的返回值的,返回值必須在編譯期就決議出來。然而用什么型別作為返回值呢?這取決于你想要保存的哪個對象。我們的例子:

?

tuple<int,long,bool> MyTuple;

?

中有三個變量。如果你寫MyTuple.get<0>()則該get的具現化版本的返回值將被推導為int。如果你寫MyTuple.get<1>()則這個get的具現化版本返回值將被推導為long。get的模板參數N就好象下標,不過卻是“型別數組”的下標。可見,get的返回值由其模板參數決定,而所有這些都在編譯期。這就是為什么你不能試圖用變量作“下標”來獲取tuple中的變量的原因。

顯然,我們很關心這個get模板函數是怎樣由它的模板參數(一個編譯期整型數)來推導出其返回值的。事實上,它通過一個traits來實現這點。下面是cons<>成員get函數的源代碼:

?

template?<int?N>

???typename?access_traits<???// access_traits<>上面已經講過

?????typename?element<N, cons<HT, TT> >::type //?element<>就是那個關鍵的traits

>::non_const_type //?注意這個復雜的返回類型

???get() {

?????return?boost::tuples::get<N>(*this);??//轉向全局的get<>函數

???}

?

所以我們下面跟蹤element<>的推導動作。請回顧我們的例子。假設我們現在寫:

?

MyTuple.get<2>();

?

這將導致tuple<int,long,bool>::get<2>()的返回值被推導為bool。下面就是如何推導的過程:

首先,最外層cons<>的HT=int,TT=cons<long,cons<bool,null_type> >;而調用的get正是最外層的。所以,上面的代碼中element<N,cons<HT,TT> >::type被推導為:

?

element<2,cons<int,cons<long,cons<bool,null_type> > > >::type

?

現在來看一看element<>的定義吧:

?

template<int?N,?class?T> //?這個int N會遞減,以呈現遞歸的形式

???struct?element

???{

???private:

?????typedef?typename?T::tail_type?Next;

???????????????????????//?在cons<>內部tail_type被typedef為TT,請回顧上面cons<>的代碼

???public:?????????????// cons<>內部有兩個關鍵的typedef:head_type、tail_type

?????typedef?typename?element<N-1,?Next>::type?type; //遞歸

???};

?

???template<class?T>

???struct?element<0,T>??//遞歸至N=0時,山窮水盡

???{

?????typedef?typename?T::head_type?type; //?山窮水盡時直接將head_type定義為type

???};

?

它看起來是如此的精巧簡練。其中的推導是這樣的:

?

element<>的內部有typedef?T::tail_type?Next;所以對于剛才我們推導出的:

?

element<2,cons<int,cons<long,cons<bool,null_type> > > >::type

?

其中的Next就是cons<int,cons<long,cons<bool,null_type> > >::tail_type,也就是:

?

cons<long,cons<bool,null_type> >

?

element中的type的typedef是這樣的:

?

typedef?typename?element<N-1,?Next>::type type;

?

對于本例,也就是:

?

typedef?typename?element<1, cons<long,cons<bool,null_type> > >::type?type;

?

同樣的方式,你可以推導出:

?

typename?element<1, cons<long,cons<bool,null_type> > >::type

?

其實就是:

?

typename?element<0,cons<bool,null_type> >::type

?

這下編譯器得采用element<>的偏特化版本了(因為第一個模板參數為0),根據偏特化版本的定義(其中對type的typedef為:typedef?typename?T::head_type?type;)你可以看出這實際就是:bool

唔,經過重重剝削,element<>traits準確無誤的將第三個元素的型別萃取了出來!

再想一下,如果N為1,那么編譯器將這樣推導:

?

?typename?element<1, cons<int,cons<long,cons<bool,null_type> > > >::type

e???????typename?element<0, cons<long,cons<bool,null_type> > >::type

?

第二行編譯器會決定采用element<>的偏特化版本,從而這就是long

這是個由typedef和整型模板參數的遞減所構筑的遞歸世界。編譯期的遞歸!(事實上,這種編譯期的編程被稱為metaprograming)現在你對這種遞歸方式應該有充分的自信。下面還有——真正取值的過程又是個遞歸調用的過程。類似的分析方法將再次采用。

請回顧上面給出的get<>的源代碼,其中只有一行——調用全局的get<>模板函數并將*this傳遞給它。所以重點是全局的get<>函數,它的源代碼是這樣的:

?

template<int?N,?class?HT,?class?TT>

???inline

typename?access_traits<??// access_traits<>的代碼請回顧上面

?????typename?element<N, cons<HT, TT> >::type

???>::non_const_type????????//?返回類型

???get(cons<HT, TT>& c) {???//?全局的get<>()函數

??????return?detail::get_class<N>::template?get<

?????????????????typename?access_traits<

?????????????????????typename?element<N, cons<HT, TT> >::type

?????????????????>::non_const_type

>(c);

}

?

你可以輕易看出玄機都在get_class<N>::template?get<>()上面。下面我將它的代碼挖給你看:

?

template<?int?N >??//這又是個用作遞歸之用的模板參數

???struct?get_class {

?????template<class?RET,?class?HT,?class?TT >

?????inline?static?RET get(cons<HT, TT>& t)

?????{

???????return?get_class<N-1>::template?get<RET>(t.tail);

?????}

???};

???template<>

???struct?get_class<0> {

?????template<class?RET,?class?HT,?class?TT>

?????inline?static?RET get(cons<HT, TT>& t)

?????{

???????return?t.head;

?????}

};

?

天哪,這真簡潔。因為遞歸能夠使程序變得簡潔。這里的遞歸仍然是通過遞減模板參數N實現,同時不斷將t.tail傳給get_class<N-1>::template get<RET>()直到N減為0,從而調用get_class<0>::get<RET>(),后者直接將t.head返回。就像這樣一種情境:(盒子表示cons<>,通常其中包括head元素和另一個盒子(cons<>)(除非是偏特化版本的cons<>))

有一排人,第一個人手里拿著一塊記數牌和一個盒子(記數牌上的數字表示模板參數N,盒子當然是cons<>數據容器)。現在,比如說,你告訴第一個人你像要那個盒子里的4號(第五個)元素(它深藏在第5重盒子里),他于是將記數牌上寫上4,然后再減去一,并將盒子打開一層,將里面的小盒子(t.tail,也是個cons<>容器,cons<>容器不正是一重套一重的嗎?)和記數牌一并傳給第二個人,第二個人將記數牌上的3減去一,然后再剝去一層盒子,將里面的盒子以及記數牌(現在是2了)傳給下一個人,下一個人做同樣的工作,直到第5個人(get_class<0>)發現記數牌上為0,那么他打開盒子,將里面的head元素傳給第四個,后者再傳給第三個...,一直傳至你手里。

并且,為了提高效率,get函數是inline的。

呼~是的,這真夠夸張,并且...不夠優雅!?是的,或許它的代碼非常丑陋,然而隱藏在它背后的思想確實無與倫比的優雅和精巧。更何況對于一個能夠應付千萬種情況,并具備高度復用性的類,這樣的實在可算是夠“優雅”的了。

另外boost還提供了一個length<>來獲得tuple的長度(即所含元素個數)

?

template<class?T>

???struct?length {

?????static const?int?value = 1 +?length<typename?T::tail_type>::value; //遞歸

};

???template<>

???struct?length<null_type> {

????static const?int?value = 0;

};

?

我想,有了上面的經驗,這種編譯期遞歸對于你應該了無秘密。我就不多說了。length<>位于namespace tuples里面。

?

最后一點細節

??為了方便用戶,boost庫還提供了make_tuple和tie函數,前者很簡單:產生一個臨時的tuple,你可以這樣使用它:

?

???tuple<int,long,bool> MyTuple=make_tuple(10,10,true);

?

??而tie則意為將參數綁在個tuple里面,不同的是因為是綁,所以它返回的tuple保存引用,像這樣使用它:

?

???int ival=10;??long lval=10; bool bval=true;

???tuple<int&,long&,bool&> MyTuple=tie(ival,lval,bval);

???... //?這里,你修改MyTuple里的數據會直接影響到ival,lval,bval;

?

??你還可以用一行代碼來更改三個變量的值,像這樣:

?

???tie(ival,lval,bval)=make_tuple(9,9,false); //?同時更改了三個變量值

?????????????????????????????????????????????//?現在ival,lval,bval分別為9,9,false。

?

??你還可以忽略make_tuple()返回的部分值,像這樣:

???tie(ival,tuples::ignore,bval)=make_tuple(9,9,false);

//?只有ival,bval被更改,lval維持原值

??????// tuples::ignore是個預定義的對象,它有一個模板化的operator =函數,

//?從而可以接受向它賦的任何值。

?

本文沒有涉及的

本文沒有涉及tupleIO的支持——實際上它幾乎只是對tuple中的每一個元素進行輸出。

?

本文沒有涉及tuple的拷貝構造函數,cons<>的拷貝構造函數,以及cons<>const成員函數——事實上,在了解了以上那些秘密后,這就微不足道了。

?

本文沒有涉及tuple提供的比較函數——事實上那比較簡單,它只是轉而比較各個元素。

?

目錄(展開《boost源碼剖析》系列文章)

總結

以上是生活随笔為你收集整理的boost源码剖析之:Tuple Types(rev#2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧美人与善在线com | 又紧又大又爽精品一区二区 | 影音先锋中文字幕无码 | 欧美激情综合亚洲一二区 | 国产精品va在线观看无码 | 成人女人看片免费视频放人 | 人妻少妇精品无码专区二区 | 国精品人妻无码一区二区三区蜜柚 | 无码av免费一区二区三区试看 | 亚洲中文字幕无码一久久区 | 狠狠色噜噜狠狠狠7777奇米 | 少妇性荡欲午夜性开放视频剧场 | 国产性生交xxxxx无码 | 亚洲中文字幕在线观看 | a片免费视频在线观看 | 樱花草在线播放免费中文 | 青草视频在线播放 | 理论片87福利理论电影 | 久久亚洲a片com人成 | 娇妻被黑人粗大高潮白浆 | 亚洲一区二区三区播放 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲日韩一区二区三区 | 四虎永久在线精品免费网址 | 小sao货水好多真紧h无码视频 | 99精品无人区乱码1区2区3区 | 日韩成人一区二区三区在线观看 | 美女毛片一区二区三区四区 | 亚洲乱码日产精品bd | 亚洲熟熟妇xxxx | 日日摸夜夜摸狠狠摸婷婷 | 亚洲精品无码国产 | 精品国产福利一区二区 | 黑人巨大精品欧美黑寡妇 | 老熟妇仑乱视频一区二区 | 伊人色综合久久天天小片 | 久久精品无码一区二区三区 | 中文字幕无线码 | 久久亚洲日韩精品一区二区三区 | 野狼第一精品社区 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲色成人中文字幕网站 | 天天av天天av天天透 | 国内少妇偷人精品视频 | 日本一本二本三区免费 | 天堂亚洲2017在线观看 | 久久综合色之久久综合 | 国产精品久久久久无码av色戒 | 国产av剧情md精品麻豆 | 国产av一区二区精品久久凹凸 | 2019午夜福利不卡片在线 | 国产精品高潮呻吟av久久4虎 | 国产乡下妇女做爰 | 久久无码人妻影院 | 人妻互换免费中文字幕 | 国产日产欧产精品精品app | 国产99久久精品一区二区 | 午夜精品久久久内射近拍高清 | 亚洲成a人片在线观看日本 | 精品乱子伦一区二区三区 | 亚洲精品国产第一综合99久久 | 亚洲中文字幕成人无码 | 国产极品美女高潮无套在线观看 | 亚洲精品国产第一综合99久久 | 国产麻豆精品一区二区三区v视界 | 成人精品天堂一区二区三区 | 国内少妇偷人精品视频 | 成年美女黄网站色大免费全看 | 人人爽人人澡人人人妻 | 亚洲精品久久久久avwww潮水 | 国产精品高潮呻吟av久久 | 人人妻人人澡人人爽人人精品浪潮 | 色狠狠av一区二区三区 | 亚洲成av人片在线观看无码不卡 | 精品国产一区二区三区四区 | 少妇激情av一区二区 | 青草青草久热国产精品 | 色婷婷av一区二区三区之红樱桃 | 久久天天躁狠狠躁夜夜免费观看 | 在线观看国产午夜福利片 | 国产69精品久久久久app下载 | 国产亚洲精品精品国产亚洲综合 | 国产精品第一区揄拍无码 | 老太婆性杂交欧美肥老太 | 无遮挡国产高潮视频免费观看 | 久久这里只有精品视频9 | 国产人妖乱国产精品人妖 | 免费国产黄网站在线观看 | 亚洲春色在线视频 | 国产国产精品人在线视 | 综合人妻久久一区二区精品 | 国语自产偷拍精品视频偷 | 亚洲午夜久久久影院 | 国产精品久久久久7777 | 欧美自拍另类欧美综合图片区 | 精品无码国产自产拍在线观看蜜 | 曰韩少妇内射免费播放 | 乌克兰少妇性做爰 | 亚洲成a人片在线观看无码 | 欧美日韩综合一区二区三区 | 老子影院午夜精品无码 | 亚洲啪av永久无码精品放毛片 | 亚洲精品午夜国产va久久成人 | 亚洲第一网站男人都懂 | 亚洲成熟女人毛毛耸耸多 | 亚洲一区av无码专区在线观看 | 俺去俺来也www色官网 | 18禁止看的免费污网站 | 成人无码视频在线观看网站 | 日本乱偷人妻中文字幕 | 成人无码影片精品久久久 | 在线a亚洲视频播放在线观看 | 激情国产av做激情国产爱 | 国产亚av手机在线观看 | 97久久精品无码一区二区 | 国产特级毛片aaaaaa高潮流水 | 成在人线av无码免观看麻豆 | 亚洲精品成a人在线观看 | 亚洲乱亚洲乱妇50p | 人妻少妇精品视频专区 | 中文字幕无码av激情不卡 | 欧美熟妇另类久久久久久不卡 | 亚洲国产综合无码一区 | 久久久久久九九精品久 | 欧美国产日韩亚洲中文 | 一本精品99久久精品77 | 中文字幕无码免费久久9一区9 | 精品厕所偷拍各类美女tp嘘嘘 | 无码人妻精品一区二区三区不卡 | 国产欧美精品一区二区三区 | 动漫av一区二区在线观看 | 日韩人妻无码中文字幕视频 | 久精品国产欧美亚洲色aⅴ大片 | 我要看www免费看插插视频 | 精品国产av色一区二区深夜久久 | 国产特级毛片aaaaaa高潮流水 | 中文字幕中文有码在线 | 清纯唯美经典一区二区 | 99精品国产综合久久久久五月天 | 秋霞成人午夜鲁丝一区二区三区 | 精品欧洲av无码一区二区三区 | 欧美人与物videos另类 | 精品一区二区三区波多野结衣 | 国产精品-区区久久久狼 | 天海翼激烈高潮到腰振不止 | 亚洲国产午夜精品理论片 | 狂野欧美性猛交免费视频 | 亚洲中文字幕在线无码一区二区 | 国产精品国产自线拍免费软件 | 两性色午夜免费视频 | 亚洲精品无码人妻无码 | 国产午夜精品一区二区三区嫩草 | 性啪啪chinese东北女人 | 亚洲一区二区三区在线观看网站 | 亚洲国产精品无码久久久久高潮 | 给我免费的视频在线观看 | 无码人妻丰满熟妇区毛片18 | 国产激情艳情在线看视频 | 日本www一道久久久免费榴莲 | 久久国产精品萌白酱免费 | 野外少妇愉情中文字幕 | 少妇久久久久久人妻无码 | 国产国语老龄妇女a片 | 无码乱肉视频免费大全合集 | 性生交大片免费看l | 久久精品人人做人人综合试看 | 亚洲娇小与黑人巨大交 | 国产香蕉尹人综合在线观看 | 色婷婷欧美在线播放内射 | 最新国产乱人伦偷精品免费网站 | 一本大道伊人av久久综合 | 精品一区二区三区无码免费视频 | 欧美成人午夜精品久久久 | 国产精品人人爽人人做我的可爱 | 亚洲阿v天堂在线 | 水蜜桃色314在线观看 | 999久久久国产精品消防器材 | 真人与拘做受免费视频一 | 无码吃奶揉捏奶头高潮视频 | 麻豆蜜桃av蜜臀av色欲av | 成人亚洲精品久久久久 | 久久综合激激的五月天 | 熟妇人妻无乱码中文字幕 | 欧美性生交活xxxxxdddd | a国产一区二区免费入口 | 精品久久久无码中文字幕 | 久久综合给合久久狠狠狠97色 | 欧洲熟妇精品视频 | 久久精品视频在线看15 | a在线观看免费网站大全 | 亚洲日本一区二区三区在线 | 亚洲熟女一区二区三区 | 日本爽爽爽爽爽爽在线观看免 | 久久99精品久久久久久动态图 | 人人妻人人澡人人爽欧美一区九九 | 无人区乱码一区二区三区 | 捆绑白丝粉色jk震动捧喷白浆 | 人人超人人超碰超国产 | 精品一二三区久久aaa片 | 久久久婷婷五月亚洲97号色 | 99riav国产精品视频 | 一本久道久久综合婷婷五月 | 精品久久8x国产免费观看 | 亚洲乱码日产精品bd | 人妻与老人中文字幕 | 国产av人人夜夜澡人人爽麻豆 | 国产超级va在线观看视频 | 天堂а√在线地址中文在线 | 亚洲日韩精品欧美一区二区 | 波多野结衣高清一区二区三区 | 亚洲色无码一区二区三区 | аⅴ资源天堂资源库在线 | 男人的天堂2018无码 | 中文字幕无码日韩欧毛 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产一区二区不卡老阿姨 | 国产在线无码精品电影网 | 对白脏话肉麻粗话av | 久久久久se色偷偷亚洲精品av | 黑人玩弄人妻中文在线 | 国产亚洲精品久久久闺蜜 | 成人一区二区免费视频 | 又粗又大又硬又长又爽 | 日本成熟视频免费视频 | 十八禁真人啪啪免费网站 | 成年美女黄网站色大免费视频 | 午夜成人1000部免费视频 | 久久久久久国产精品无码下载 | 精品乱子伦一区二区三区 | 久久久久久久人妻无码中文字幕爆 | 人妻尝试又大又粗久久 | 国产成人无码a区在线观看视频app | 免费国产黄网站在线观看 | 亚洲人成网站在线播放942 | 精品厕所偷拍各类美女tp嘘嘘 | 性生交片免费无码看人 | 亚洲成熟女人毛毛耸耸多 | 人人爽人人澡人人人妻 | 亚洲成a人片在线观看无码3d | 中文精品久久久久人妻不卡 | 人妻体内射精一区二区三四 | 人人妻人人澡人人爽人人精品 | 中文字幕精品av一区二区五区 | 久久久久久av无码免费看大片 | 5858s亚洲色大成网站www | 男女超爽视频免费播放 | 又粗又大又硬又长又爽 | 国产成人精品三级麻豆 | 日本高清一区免费中文视频 | 真人与拘做受免费视频 | 无码人妻丰满熟妇区五十路百度 | 亚洲色大成网站www | 国产一区二区三区精品视频 | 亚洲成a人片在线观看无码3d | 国产亚洲精品久久久闺蜜 | 亚洲中文字幕无码一久久区 | 国产电影无码午夜在线播放 | 俺去俺来也在线www色官网 | 三级4级全黄60分钟 | 7777奇米四色成人眼影 | 亚洲精品www久久久 | 日本熟妇乱子伦xxxx | 国产激情艳情在线看视频 | 欧美人与禽zoz0性伦交 | 国产麻豆精品精东影业av网站 | 国产精品福利视频导航 | 蜜臀aⅴ国产精品久久久国产老师 | 国产精品高潮呻吟av久久 | 性欧美熟妇videofreesex | 久久午夜无码鲁丝片午夜精品 | 久久99精品久久久久婷婷 | 麻豆人妻少妇精品无码专区 | 亚洲精品成人av在线 | 国产精品人妻一区二区三区四 | 日日躁夜夜躁狠狠躁 | 欧美精品国产综合久久 | 日韩欧美成人免费观看 | 亲嘴扒胸摸屁股激烈网站 | 一本久久伊人热热精品中文字幕 | 欧美日韩精品 | 亚洲の无码国产の无码影院 | 无码国产激情在线观看 | 国精品人妻无码一区二区三区蜜柚 | 久久久久久久久888 | 激情五月综合色婷婷一区二区 | 欧美真人作爱免费视频 | 成人精品视频一区二区三区尤物 | 国产精品久久久久9999小说 | 狠狠色欧美亚洲狠狠色www | 无码人妻出轨黑人中文字幕 | 国产av无码专区亚洲a∨毛片 | 无遮挡啪啪摇乳动态图 | 人妻体内射精一区二区三四 | 又大又紧又粉嫩18p少妇 | 国内老熟妇对白xxxxhd | 中文字幕久久久久人妻 | 婷婷综合久久中文字幕蜜桃三电影 | 国产艳妇av在线观看果冻传媒 | 国产真实伦对白全集 | 久久亚洲a片com人成 | 人妻与老人中文字幕 | 亚洲国产欧美日韩精品一区二区三区 | 国产内射爽爽大片视频社区在线 | 无码人妻精品一区二区三区不卡 | 色综合久久久无码网中文 | 四虎4hu永久免费 | 成人精品视频一区二区 | 欧美喷潮久久久xxxxx | 国产无套内射久久久国产 | 女人色极品影院 | 久久久久se色偷偷亚洲精品av | 嫩b人妻精品一区二区三区 | 蜜臀av在线播放 久久综合激激的五月天 | 人妻少妇被猛烈进入中文字幕 | 亚洲热妇无码av在线播放 | 精品国产一区二区三区av 性色 | 亚欧洲精品在线视频免费观看 | 领导边摸边吃奶边做爽在线观看 | 少妇高潮一区二区三区99 | 亚洲成a人一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 成人三级无码视频在线观看 | 午夜成人1000部免费视频 | 久久精品中文闷骚内射 | 少妇久久久久久人妻无码 | 欧美freesex黑人又粗又大 | 日韩亚洲欧美精品综合 | 无码av免费一区二区三区试看 | 亚洲国产精品成人久久蜜臀 | 成人一在线视频日韩国产 | 久久久精品成人免费观看 | 全球成人中文在线 | 国内少妇偷人精品视频免费 | 亚洲国产精品一区二区第一页 | 在线成人www免费观看视频 | 欧美三级不卡在线观看 | 成人欧美一区二区三区黑人免费 | 成人欧美一区二区三区黑人 | 97精品国产97久久久久久免费 | 日本丰满熟妇videos | 理论片87福利理论电影 | 熟女少妇在线视频播放 | 蜜桃无码一区二区三区 | 领导边摸边吃奶边做爽在线观看 | 色一情一乱一伦 | 1000部夫妻午夜免费 | 国产午夜亚洲精品不卡 | 婷婷丁香五月天综合东京热 | 欧美日韩一区二区免费视频 | yw尤物av无码国产在线观看 | 亚洲日韩精品欧美一区二区 | 欧美人妻一区二区三区 | 荫蒂添的好舒服视频囗交 | 熟妇人妻无乱码中文字幕 | 丰满人妻被黑人猛烈进入 | 无码人妻丰满熟妇区毛片18 | 国产乱码精品一品二品 | 久久精品国产大片免费观看 | 熟妇人妻中文av无码 | 亚洲成色www久久网站 | 国产成人无码区免费内射一片色欲 | 精品欧洲av无码一区二区三区 | 久在线观看福利视频 | 亚洲经典千人经典日产 | 青青草原综合久久大伊人精品 | 中文无码成人免费视频在线观看 | 巨爆乳无码视频在线观看 | 亚洲成a人片在线观看无码 | 色欲综合久久中文字幕网 | 亚洲成色在线综合网站 | 夜精品a片一区二区三区无码白浆 | 欧美大屁股xxxxhd黑色 | 四十如虎的丰满熟妇啪啪 | 黑人巨大精品欧美黑寡妇 | 国产午夜亚洲精品不卡下载 | 亚洲欧美精品伊人久久 | 色综合久久久久综合一本到桃花网 | 中文字幕无码人妻少妇免费 | 在线观看免费人成视频 | 国内揄拍国内精品人妻 | 日韩精品无码免费一区二区三区 | 巨爆乳无码视频在线观看 | 真人与拘做受免费视频 | 99久久人妻精品免费一区 | 玩弄少妇高潮ⅹxxxyw | av无码久久久久不卡免费网站 | 中文字幕久久久久人妻 | 成人av无码一区二区三区 | 鲁大师影院在线观看 | 亚洲中文无码av永久不收费 | 露脸叫床粗话东北少妇 | 久久久中文字幕日本无吗 | 思思久久99热只有频精品66 | 图片区 小说区 区 亚洲五月 | 中文字幕无码视频专区 | 中文字幕无线码免费人妻 | 精品无码av一区二区三区 | 中文字幕乱码中文乱码51精品 | 日韩人妻无码一区二区三区久久99 | 日本欧美一区二区三区乱码 | 2020最新国产自产精品 | 国产亚洲精品久久久ai换 | 天堂在线观看www | 国产成人无码午夜视频在线观看 | 无遮挡国产高潮视频免费观看 | 亚洲人成影院在线观看 | 中文字幕av日韩精品一区二区 | 丝袜人妻一区二区三区 | 亚洲国产综合无码一区 | a片在线免费观看 | 国产人妻精品午夜福利免费 | 亚洲精品一区二区三区大桥未久 | 荫蒂被男人添的好舒服爽免费视频 | 色综合久久中文娱乐网 | 无码精品人妻一区二区三区av | 国产色xx群视频射精 | 欧美性生交活xxxxxdddd | 欧美老妇交乱视频在线观看 | 亚洲 另类 在线 欧美 制服 | 亚洲色欲色欲欲www在线 | 中文久久乱码一区二区 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲一区二区三区无码久久 | 国产人妖乱国产精品人妖 | 精品成人av一区二区三区 | 无遮挡国产高潮视频免费观看 | 无码精品国产va在线观看dvd | 免费中文字幕日韩欧美 | 久久精品人人做人人综合试看 | 性色欲情网站iwww九文堂 | 三上悠亚人妻中文字幕在线 | 激情亚洲一区国产精品 | 国产精品怡红院永久免费 | 国产精品二区一区二区aⅴ污介绍 | 国内揄拍国内精品人妻 | 天天做天天爱天天爽综合网 | 国产97人人超碰caoprom | 国产精品无码一区二区桃花视频 | 国产特级毛片aaaaaa高潮流水 | 俄罗斯老熟妇色xxxx | 国产人妻精品一区二区三区 | 中文字幕无码热在线视频 | 精品国偷自产在线视频 | 香港三级日本三级妇三级 | 亚洲精品欧美二区三区中文字幕 | 天堂一区人妻无码 | 131美女爱做视频 | 撕开奶罩揉吮奶头视频 | 国产小呦泬泬99精品 | 国产亚洲精品久久久久久久久动漫 | 日韩无套无码精品 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲中文字幕在线观看 | 日韩精品一区二区av在线 | 国产真人无遮挡作爱免费视频 | 欧美日韩综合一区二区三区 | 欧美阿v高清资源不卡在线播放 | 大地资源中文第3页 | 亚洲狠狠婷婷综合久久 | 国产精品毛片一区二区 | 天堂无码人妻精品一区二区三区 | 国产成人无码午夜视频在线观看 | 色欲av亚洲一区无码少妇 | 成人一在线视频日韩国产 | 欧美第一黄网免费网站 | 亚洲啪av永久无码精品放毛片 | 51国偷自产一区二区三区 | 国产在线精品一区二区高清不卡 | 亚洲一区av无码专区在线观看 | 国产精品无码mv在线观看 | 亚洲国产精品一区二区美利坚 | 国产精品第一区揄拍无码 | 国产精品人人爽人人做我的可爱 | 人妻少妇精品视频专区 | 午夜丰满少妇性开放视频 | 小鲜肉自慰网站xnxx | 成人无码视频免费播放 | 无码人妻少妇伦在线电影 | 中文字幕日韩精品一区二区三区 | 伊在人天堂亚洲香蕉精品区 | 无码国内精品人妻少妇 | 免费乱码人妻系列无码专区 | 综合激情五月综合激情五月激情1 | 亚洲国产成人av在线观看 | 天天综合网天天综合色 | 亚欧洲精品在线视频免费观看 | 在线播放免费人成毛片乱码 | 少妇性荡欲午夜性开放视频剧场 | 国内揄拍国内精品人妻 | 内射白嫩少妇超碰 | 亚洲乱码中文字幕在线 | 亚洲无人区午夜福利码高清完整版 | 国产又粗又硬又大爽黄老大爷视 | 亚洲精品一区国产 | 精品人妻中文字幕有码在线 | 久久国内精品自在自线 | 亚洲精品久久久久中文第一幕 | 自拍偷自拍亚洲精品被多人伦好爽 | 色老头在线一区二区三区 | 欧美日韩一区二区三区自拍 | a片免费视频在线观看 | 亚洲 a v无 码免 费 成 人 a v | 精品国产一区二区三区四区 | 国产舌乚八伦偷品w中 | 女人被男人爽到呻吟的视频 | 双乳奶水饱满少妇呻吟 | 国产美女精品一区二区三区 | 在教室伦流澡到高潮hnp视频 | 天天躁夜夜躁狠狠是什么心态 | 日日摸夜夜摸狠狠摸婷婷 | 国产人妻精品一区二区三区不卡 | 在线播放无码字幕亚洲 | 一个人看的www免费视频在线观看 | 日本xxxx色视频在线观看免费 | aa片在线观看视频在线播放 | 最近免费中文字幕中文高清百度 | 曰韩无码二三区中文字幕 | 亚洲日韩av一区二区三区中文 | 一本色道久久综合狠狠躁 | 欧美变态另类xxxx | 亚洲欧美综合区丁香五月小说 | 亚洲欧美精品aaaaaa片 | 欧美日韩一区二区三区自拍 | 日日干夜夜干 | 一区二区三区高清视频一 | 精品欧洲av无码一区二区三区 | 亚洲娇小与黑人巨大交 | 久久久久99精品国产片 | 樱花草在线播放免费中文 | 日本xxxx色视频在线观看免费 | 中文字幕精品av一区二区五区 | 国产精品久久久一区二区三区 | 18禁止看的免费污网站 | 亚洲精品一区二区三区在线观看 | 亚洲小说春色综合另类 | 好爽又高潮了毛片免费下载 | 中文亚洲成a人片在线观看 | 国产成人无码午夜视频在线观看 | 国产sm调教视频在线观看 | 精品亚洲成av人在线观看 | 狠狠噜狠狠狠狠丁香五月 | 欧美第一黄网免费网站 | 天堂а√在线地址中文在线 | 欧美大屁股xxxxhd黑色 | 国产成人无码a区在线观看视频app | 久久精品人人做人人综合 | 香港三级日本三级妇三级 | 国产色精品久久人妻 | 亚洲欧美综合区丁香五月小说 | 久久精品国产亚洲精品 | 丰腴饱满的极品熟妇 | 久久久久久国产精品无码下载 | 久久综合激激的五月天 | 国产精品理论片在线观看 | 久久久久免费精品国产 | 极品尤物被啪到呻吟喷水 | 国产乱人伦偷精品视频 | 性生交大片免费看女人按摩摩 | 久久天天躁夜夜躁狠狠 | 丰满少妇高潮惨叫视频 | 图片小说视频一区二区 | 久久 国产 尿 小便 嘘嘘 | 美女扒开屁股让男人桶 | 中文字幕无线码 | 国模大胆一区二区三区 | 老司机亚洲精品影院无码 | 国产精品亚洲专区无码不卡 | 国内丰满熟女出轨videos | 亚洲中文字幕乱码av波多ji | 婷婷五月综合激情中文字幕 | 亚洲色无码一区二区三区 | 漂亮人妻洗澡被公强 日日躁 | 乌克兰少妇xxxx做受 | 成人综合网亚洲伊人 | 亚洲欧美色中文字幕在线 | 午夜福利不卡在线视频 | 乱码av麻豆丝袜熟女系列 | 亚洲人成网站免费播放 | 美女极度色诱视频国产 | 狠狠噜狠狠狠狠丁香五月 | 久久亚洲精品成人无码 | 久久97精品久久久久久久不卡 | 亚洲精品一区二区三区在线观看 | 高潮毛片无遮挡高清免费视频 | 人妻体内射精一区二区三四 | 亚洲欧美日韩综合久久久 | 亚洲自偷精品视频自拍 | 图片小说视频一区二区 | www国产亚洲精品久久久日本 | 性色av无码免费一区二区三区 | 中文字幕乱码人妻无码久久 | 精品成人av一区二区三区 | 99在线 | 亚洲 | 少妇邻居内射在线 | aa片在线观看视频在线播放 | 国产精品第一区揄拍无码 | 亚洲成a人片在线观看日本 | 久久亚洲日韩精品一区二区三区 | 国色天香社区在线视频 | 久久无码中文字幕免费影院蜜桃 | 无码播放一区二区三区 | 人人澡人人妻人人爽人人蜜桃 | 18禁止看的免费污网站 | 日产精品99久久久久久 | 亚洲爆乳精品无码一区二区三区 | 久久久精品人妻久久影视 | 国产 精品 自在自线 | а√天堂www在线天堂小说 | 久久精品人人做人人综合 | 久久99国产综合精品 | 久久婷婷五月综合色国产香蕉 | 国产极品视觉盛宴 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 日日麻批免费40分钟无码 | 国产黄在线观看免费观看不卡 | av无码久久久久不卡免费网站 | 小sao货水好多真紧h无码视频 | 色 综合 欧美 亚洲 国产 | 给我免费的视频在线观看 | 亚洲中文字幕乱码av波多ji | 免费乱码人妻系列无码专区 | 亚洲 日韩 欧美 成人 在线观看 | 免费无码的av片在线观看 | 婷婷色婷婷开心五月四房播播 | 黄网在线观看免费网站 | 久久久成人毛片无码 | 久久人妻内射无码一区三区 | 色欲av亚洲一区无码少妇 | 久久亚洲国产成人精品性色 | 丝袜美腿亚洲一区二区 | 亚洲男女内射在线播放 | 久久久久成人精品免费播放动漫 | 综合网日日天干夜夜久久 | 亚洲综合无码一区二区三区 | 无码精品人妻一区二区三区av | 东京无码熟妇人妻av在线网址 | 国产精品美女久久久网av | 高清国产亚洲精品自在久久 | 天天爽夜夜爽夜夜爽 | 男女超爽视频免费播放 | 久久天天躁夜夜躁狠狠 | 国产又粗又硬又大爽黄老大爷视 | 亚洲熟熟妇xxxx | 久久久久久亚洲精品a片成人 | 国产香蕉尹人视频在线 | 国产精品办公室沙发 | 色婷婷香蕉在线一区二区 | 亚洲无人区午夜福利码高清完整版 | 午夜成人1000部免费视频 | 国产办公室秘书无码精品99 | 国产精品人妻一区二区三区四 | 99久久人妻精品免费一区 | 男人的天堂2018无码 | 夜夜躁日日躁狠狠久久av | 国产免费观看黄av片 | 99riav国产精品视频 | 少妇愉情理伦片bd | 亚洲aⅴ无码成人网站国产app | 久久久中文字幕日本无吗 | 中文字幕无码热在线视频 | 风流少妇按摩来高潮 | 欧洲熟妇色 欧美 | 日日天干夜夜狠狠爱 | 女高中生第一次破苞av | 日日摸天天摸爽爽狠狠97 | 国产午夜视频在线观看 | a在线亚洲男人的天堂 | 国产又爽又黄又刺激的视频 | 亚洲欧洲日本综合aⅴ在线 | 国产卡一卡二卡三 | 欧美日韩人成综合在线播放 | 东京无码熟妇人妻av在线网址 | 国产精品第一国产精品 | 久久视频在线观看精品 | 性欧美大战久久久久久久 | 亚洲狠狠婷婷综合久久 | 国产av无码专区亚洲awww | 亚洲欧美日韩综合久久久 | 午夜精品一区二区三区的区别 | 国产在线精品一区二区三区直播 | 国产精品对白交换视频 | 久久亚洲日韩精品一区二区三区 | 国产av剧情md精品麻豆 | 性生交大片免费看女人按摩摩 | 狠狠色噜噜狠狠狠狠7777米奇 | 天天摸天天碰天天添 | 麻豆精产国品 | 两性色午夜免费视频 | 美女毛片一区二区三区四区 | 国产精品久久精品三级 | 亚洲理论电影在线观看 | 国产av久久久久精东av | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 网友自拍区视频精品 | 久久精品国产一区二区三区肥胖 | 亚洲一区二区三区偷拍女厕 | 蜜桃视频韩日免费播放 | 51国偷自产一区二区三区 | 东京热男人av天堂 | 色婷婷综合中文久久一本 | 亚洲中文字幕无码中字 | 少妇久久久久久人妻无码 | 国产麻豆精品一区二区三区v视界 | 狠狠综合久久久久综合网 | 樱花草在线社区www | 欧美老妇交乱视频在线观看 | 在线欧美精品一区二区三区 | 一本色道婷婷久久欧美 | 欧美第一黄网免费网站 | 亚洲经典千人经典日产 | 男女超爽视频免费播放 | 国产亚洲欧美日韩亚洲中文色 | 精品偷自拍另类在线观看 | 亚洲国产精品无码久久久久高潮 | 国产精品理论片在线观看 | 理论片87福利理论电影 | 青草青草久热国产精品 | 成人女人看片免费视频放人 | 无码av中文字幕免费放 | 综合人妻久久一区二区精品 | 亚洲中文字幕在线观看 | 国产精品欧美成人 | 久久久久99精品国产片 | 日本一区二区三区免费高清 | 少妇厨房愉情理9仑片视频 | 中文字幕av日韩精品一区二区 | 亚洲精品一区三区三区在线观看 | 日日麻批免费40分钟无码 | 成熟人妻av无码专区 | 国产在线一区二区三区四区五区 | 香蕉久久久久久av成人 | 激情五月综合色婷婷一区二区 | 国产精品久免费的黄网站 | 成人欧美一区二区三区黑人 | 97精品国产97久久久久久免费 | 亚洲理论电影在线观看 | 成人aaa片一区国产精品 | 午夜精品久久久久久久久 | 国产精品久久国产精品99 | 又大又紧又粉嫩18p少妇 | 久久99精品久久久久久动态图 | 九一九色国产 | 国产情侣作爱视频免费观看 | 久久无码专区国产精品s | 亚洲小说春色综合另类 | 欧美精品无码一区二区三区 | 久久精品国产日本波多野结衣 | 亚洲自偷自偷在线制服 | 国产一区二区不卡老阿姨 | 国产人妻精品一区二区三区不卡 | 狠狠色丁香久久婷婷综合五月 | 久久久婷婷五月亚洲97号色 | 欧美激情一区二区三区成人 | 中文字幕无码免费久久99 | 欧美性生交xxxxx久久久 | 久久久国产精品无码免费专区 | 国产在线一区二区三区四区五区 | 秋霞成人午夜鲁丝一区二区三区 | 国产舌乚八伦偷品w中 | 中文字幕乱码人妻二区三区 | 少女韩国电视剧在线观看完整 | 日本肉体xxxx裸交 | 在教室伦流澡到高潮hnp视频 | 国产真人无遮挡作爱免费视频 | 国产无套粉嫩白浆在线 | 国产av一区二区三区最新精品 | 亚洲乱码中文字幕在线 | 久久天天躁狠狠躁夜夜免费观看 | 蜜桃视频韩日免费播放 | 日产国产精品亚洲系列 | 思思久久99热只有频精品66 | 亚洲精品一区二区三区在线观看 | 久久久中文久久久无码 | 在线播放无码字幕亚洲 | 国产免费久久久久久无码 | 国产精品第一国产精品 | 国产片av国语在线观看 | 中文毛片无遮挡高清免费 | 亚洲国产精品久久人人爱 | 国产激情精品一区二区三区 | 欧美 亚洲 国产 另类 | 图片区 小说区 区 亚洲五月 | 福利一区二区三区视频在线观看 | 亚洲综合久久一区二区 | 2020久久香蕉国产线看观看 | 人妻夜夜爽天天爽三区 | 日本免费一区二区三区最新 | 少妇太爽了在线观看 | 捆绑白丝粉色jk震动捧喷白浆 | 性欧美牲交在线视频 | 国产av一区二区三区最新精品 | 国产极品美女高潮无套在线观看 | 日本乱人伦片中文三区 | 久久午夜无码鲁丝片午夜精品 | 亚洲中文字幕成人无码 | 国产人妻精品午夜福利免费 | 99国产精品白浆在线观看免费 | 亚洲欧洲日本综合aⅴ在线 | 无码纯肉视频在线观看 | 国产超级va在线观看视频 | 成人精品一区二区三区中文字幕 | 日产精品高潮呻吟av久久 | 精品无码成人片一区二区98 | 日日碰狠狠丁香久燥 | 欧美放荡的少妇 | 成人片黄网站色大片免费观看 | 一本久道久久综合婷婷五月 | 精品久久久久香蕉网 | 在线精品国产一区二区三区 | 99精品久久毛片a片 | 色狠狠av一区二区三区 | 内射后入在线观看一区 | 天天摸天天透天天添 | 国产情侣作爱视频免费观看 | 国产精品丝袜黑色高跟鞋 | 夜夜躁日日躁狠狠久久av | 午夜时刻免费入口 | 久9re热视频这里只有精品 | 久久久av男人的天堂 | 精品久久久久香蕉网 | 九一九色国产 | 欧美精品在线观看 | www成人国产高清内射 | 激情内射日本一区二区三区 | 国产精品永久免费视频 | 成熟人妻av无码专区 | 久久综合香蕉国产蜜臀av | 国产精品丝袜黑色高跟鞋 | 在线欧美精品一区二区三区 | 欧美老熟妇乱xxxxx | 精品日本一区二区三区在线观看 | 欧美 亚洲 国产 另类 | 国产成人一区二区三区在线观看 | 色综合天天综合狠狠爱 | 亚洲无人区一区二区三区 | 国产日产欧产精品精品app | 欧美zoozzooz性欧美 | 一二三四社区在线中文视频 | 国产乡下妇女做爰 | 国产成人一区二区三区在线观看 | 亚洲大尺度无码无码专区 | 少妇人妻偷人精品无码视频 | 少妇的肉体aa片免费 | 99久久精品无码一区二区毛片 | 久久精品国产亚洲精品 | 久久精品人人做人人综合试看 | 亚洲无人区一区二区三区 | 欧美zoozzooz性欧美 | 久久久久久久女国产乱让韩 | 国产真人无遮挡作爱免费视频 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 精品国精品国产自在久国产87 | 欧美35页视频在线观看 | 久久综合给合久久狠狠狠97色 | 成人动漫在线观看 | 久久久久成人精品免费播放动漫 | 国内综合精品午夜久久资源 | 99re在线播放 | 久久久中文久久久无码 | 国产成人无码av片在线观看不卡 | 欧美日韩综合一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品对白交换视频 | 久久亚洲a片com人成 | 中文字幕无码热在线视频 | 啦啦啦www在线观看免费视频 | 日本丰满护士爆乳xxxx | 欧美黑人巨大xxxxx | 日日躁夜夜躁狠狠躁 | 国产精品va在线观看无码 | 中文字幕无码av激情不卡 | 小sao货水好多真紧h无码视频 | 亚洲国产日韩a在线播放 | 国产无套内射久久久国产 | 色婷婷香蕉在线一区二区 | 领导边摸边吃奶边做爽在线观看 | 少妇性l交大片 | 国产精品毛多多水多 | 欧美熟妇另类久久久久久多毛 | 亚洲中文字幕无码中文字在线 | 久久久久免费看成人影片 | 亚洲国精产品一二二线 | 纯爱无遮挡h肉动漫在线播放 | 国产精品丝袜黑色高跟鞋 | 久久久国产精品无码免费专区 | 一本久道久久综合狠狠爱 | 国产亚洲精品久久久久久大师 | 国产精品第一区揄拍无码 | 精品熟女少妇av免费观看 | 亚洲精品国产a久久久久久 | 亚洲国产欧美日韩精品一区二区三区 | 红桃av一区二区三区在线无码av | 欧美人妻一区二区三区 | 国产成人一区二区三区在线观看 | 沈阳熟女露脸对白视频 | 国产人妻久久精品二区三区老狼 | 亚洲春色在线视频 | 欧美日韩一区二区综合 | 国产两女互慰高潮视频在线观看 | 国产精品-区区久久久狼 | 强开小婷嫩苞又嫩又紧视频 | 欧美丰满老熟妇xxxxx性 | 好男人社区资源 | 撕开奶罩揉吮奶头视频 | 日韩视频 中文字幕 视频一区 | 欧美 日韩 人妻 高清 中文 | 国产人妻精品一区二区三区 | 99久久精品国产一区二区蜜芽 | 2020久久香蕉国产线看观看 | 国产欧美精品一区二区三区 | 人妻少妇被猛烈进入中文字幕 | 国产精品久久久久久无码 | 亚洲一区二区三区香蕉 | 欧美三级a做爰在线观看 | 色 综合 欧美 亚洲 国产 | 国产精品a成v人在线播放 | 国产成人无码区免费内射一片色欲 | 亚洲国产精品无码一区二区三区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产va免费精品观看 | 中文亚洲成a人片在线观看 | 好男人社区资源 | 久久午夜无码鲁丝片午夜精品 | 亚洲精品一区二区三区四区五区 | 国产色在线 | 国产 | 成在人线av无码免费 | 国产美女精品一区二区三区 | 老熟妇乱子伦牲交视频 | 日本免费一区二区三区最新 | 无码乱肉视频免费大全合集 | 最近中文2019字幕第二页 | 精品少妇爆乳无码av无码专区 | 午夜时刻免费入口 | 欧美黑人乱大交 | 欧美 日韩 人妻 高清 中文 | 欧美 丝袜 自拍 制服 另类 | 欧美日韩色另类综合 | 双乳奶水饱满少妇呻吟 | 亚洲码国产精品高潮在线 | 嫩b人妻精品一区二区三区 | 亚洲区小说区激情区图片区 | 丰满妇女强制高潮18xxxx | 国产亚洲精品久久久久久久久动漫 | 欧美黑人性暴力猛交喷水 | 亚洲一区二区三区播放 | 爱做久久久久久 | 中文精品久久久久人妻不卡 | 亚洲码国产精品高潮在线 | 亚洲男人av天堂午夜在 | 亚洲理论电影在线观看 | 免费国产成人高清在线观看网站 | 中国大陆精品视频xxxx | 亚洲精品一区二区三区在线 | 国产精品久久国产精品99 | a国产一区二区免费入口 | 5858s亚洲色大成网站www | 午夜精品久久久内射近拍高清 | 99麻豆久久久国产精品免费 | 中文字幕乱妇无码av在线 | 精品欧美一区二区三区久久久 | 娇妻被黑人粗大高潮白浆 | 亚洲国产一区二区三区在线观看 | 午夜精品久久久久久久久 | 国产特级毛片aaaaaaa高清 | 亚洲精品一区国产 | 国产sm调教视频在线观看 | 成人性做爰aaa片免费看不忠 | 久久99国产综合精品 | 日日摸天天摸爽爽狠狠97 | 久久久亚洲欧洲日产国码αv | 国产舌乚八伦偷品w中 | 捆绑白丝粉色jk震动捧喷白浆 | 波多野结衣乳巨码无在线观看 | 中文字幕人妻无码一区二区三区 | 最近的中文字幕在线看视频 | 内射欧美老妇wbb | 免费网站看v片在线18禁无码 | 少妇邻居内射在线 | 最新国产乱人伦偷精品免费网站 | 麻豆国产人妻欲求不满 | 国产真实乱对白精彩久久 | 精品欧洲av无码一区二区三区 | 国产精品多人p群无码 | 波多野结衣乳巨码无在线观看 | 又大又硬又爽免费视频 | 又湿又紧又大又爽a视频国产 | 久久久久国色av免费观看性色 | av无码电影一区二区三区 | 丰满人妻一区二区三区免费视频 | av人摸人人人澡人人超碰下载 | 国产精品美女久久久久av爽李琼 | 精品国产乱码久久久久乱码 | 99精品无人区乱码1区2区3区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 一本无码人妻在中文字幕免费 | 综合人妻久久一区二区精品 | 18精品久久久无码午夜福利 | 无码纯肉视频在线观看 | 白嫩日本少妇做爰 | 国产亚洲人成在线播放 | 亚洲另类伦春色综合小说 | 宝宝好涨水快流出来免费视频 | 无码中文字幕色专区 | 国产精品18久久久久久麻辣 | 久久久久亚洲精品男人的天堂 | 色情久久久av熟女人妻网站 | 1000部夫妻午夜免费 | 国产乱人偷精品人妻a片 | 欧美人与禽zoz0性伦交 | 亚洲欧洲中文日韩av乱码 | 国产小呦泬泬99精品 | 一本久道久久综合婷婷五月 | 图片区 小说区 区 亚洲五月 | a国产一区二区免费入口 | 国产超级va在线观看视频 | 亚洲色欲色欲天天天www | 少妇人妻偷人精品无码视频 | 最近的中文字幕在线看视频 | yw尤物av无码国产在线观看 | 久久精品中文闷骚内射 | 国产性生交xxxxx无码 | 东京热无码av男人的天堂 | 久久午夜无码鲁丝片午夜精品 | 亚洲熟悉妇女xxx妇女av | 久久久久久国产精品无码下载 | 日韩欧美中文字幕公布 | 日本精品人妻无码77777 天堂一区人妻无码 | 免费观看的无遮挡av | 日日摸天天摸爽爽狠狠97 | 激情内射亚州一区二区三区爱妻 | 中文无码精品a∨在线观看不卡 | 国产9 9在线 | 中文 | 久久精品中文字幕大胸 | 亚洲精品中文字幕久久久久 | 成人亚洲精品久久久久软件 | 天堂一区人妻无码 | 少妇一晚三次一区二区三区 | 国产在线一区二区三区四区五区 | 九九久久精品国产免费看小说 | 毛片内射-百度 | 在线 国产 欧美 亚洲 天堂 | 天堂а√在线地址中文在线 | 麻花豆传媒剧国产免费mv在线 | 99久久精品日本一区二区免费 | 美女扒开屁股让男人桶 | 一本加勒比波多野结衣 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 中国大陆精品视频xxxx | 性啪啪chinese东北女人 | 人人爽人人爽人人片av亚洲 | 爆乳一区二区三区无码 | 一本久道久久综合婷婷五月 | 丰满护士巨好爽好大乳 | 综合人妻久久一区二区精品 | 国产无遮挡又黄又爽又色 | 狠狠色丁香久久婷婷综合五月 | 国产97人人超碰caoprom | 免费网站看v片在线18禁无码 | 久久精品人妻少妇一区二区三区 | 伦伦影院午夜理论片 | 玩弄少妇高潮ⅹxxxyw | 在教室伦流澡到高潮hnp视频 | 午夜时刻免费入口 | 少妇被粗大的猛进出69影院 | 97无码免费人妻超级碰碰夜夜 | 国精产品一品二品国精品69xx | 国产一区二区三区日韩精品 | 麻豆国产丝袜白领秘书在线观看 | 丰满少妇弄高潮了www | 欧美一区二区三区 | 无码人妻精品一区二区三区不卡 | 国产婷婷色一区二区三区在线 | 97精品国产97久久久久久免费 | 久久国产精品萌白酱免费 | 爱做久久久久久 | 无码中文字幕色专区 | 人妻尝试又大又粗久久 | 久久久国产精品无码免费专区 | 国产成人精品久久亚洲高清不卡 | 精品无码一区二区三区的天堂 | 亚洲成av人片在线观看无码不卡 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 大色综合色综合网站 | 午夜精品久久久久久久久 | 精品一二三区久久aaa片 | a国产一区二区免费入口 | 亚洲男人av香蕉爽爽爽爽 | 亚洲爆乳精品无码一区二区三区 | 一个人看的视频www在线 | 国产一区二区三区日韩精品 | 国产美女极度色诱视频www | 亚洲国产精品无码久久久久高潮 | 国产成人一区二区三区别 | 无码成人精品区在线观看 | 亚洲国产精品无码久久久久高潮 | 鲁鲁鲁爽爽爽在线视频观看 | av小次郎收藏 | 中文字幕无码日韩专区 | 久久精品人妻少妇一区二区三区 | 十八禁真人啪啪免费网站 | 成人无码视频免费播放 | 中国女人内谢69xxxxxa片 | 精品国产成人一区二区三区 | 丰满岳乱妇在线观看中字无码 | 131美女爱做视频 | 亚洲s码欧洲m码国产av | 日韩精品久久久肉伦网站 | 激情国产av做激情国产爱 | 中文字幕精品av一区二区五区 | 国产成人精品久久亚洲高清不卡 | 性色欲网站人妻丰满中文久久不卡 | 麻豆国产丝袜白领秘书在线观看 | 人人澡人摸人人添 | 亚洲成av人片天堂网无码】 | 一本久久a久久精品vr综合 | 在线a亚洲视频播放在线观看 | 日韩人妻无码中文字幕视频 | 中文字幕无码免费久久9一区9 | 亚洲欧美综合区丁香五月小说 | 人妻插b视频一区二区三区 | 亚洲欧美精品aaaaaa片 | 蜜桃av抽搐高潮一区二区 | 国产av人人夜夜澡人人爽麻豆 | 少妇性l交大片 | 亚洲精品一区二区三区在线 | 99国产精品白浆在线观看免费 | 日韩 欧美 动漫 国产 制服 | 国产成人精品一区二区在线小狼 | 人妻互换免费中文字幕 | 国产日产欧产精品精品app | 伊在人天堂亚洲香蕉精品区 | 日韩人妻无码中文字幕视频 | 欧美精品一区二区精品久久 | 无码毛片视频一区二区本码 | 六十路熟妇乱子伦 | 欧美日韩一区二区免费视频 | 中文字幕+乱码+中文字幕一区 | 久久天天躁狠狠躁夜夜免费观看 | 夜夜躁日日躁狠狠久久av | 国产小呦泬泬99精品 | 亚洲另类伦春色综合小说 | 久久精品女人天堂av免费观看 | 精品国偷自产在线视频 | 黑人巨大精品欧美黑寡妇 | 日韩人妻少妇一区二区三区 | 熟女体下毛毛黑森林 | 秋霞特色aa大片 | 国产97色在线 | 免 | 精品久久久久久人妻无码中文字幕 | 亚洲国产欧美国产综合一区 | 高潮喷水的毛片 | 狠狠色噜噜狠狠狠7777奇米 | www成人国产高清内射 | 中文字幕日产无线码一区 | 精品国产一区二区三区四区 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲日韩中文字幕在线播放 | 日韩成人一区二区三区在线观看 | 欧美人与禽zoz0性伦交 | 少妇人妻偷人精品无码视频 | 国产一区二区三区精品视频 | 天堂在线观看www | 亚洲国产av美女网站 | 天堂在线观看www | 亚洲精品一区二区三区四区五区 | 精品一区二区三区波多野结衣 | 国产亲子乱弄免费视频 | 性生交大片免费看l | 人人妻人人澡人人爽欧美一区九九 | 丝袜 中出 制服 人妻 美腿 | 日韩少妇白浆无码系列 | 国产精品永久免费视频 | 男人扒开女人内裤强吻桶进去 | 在线亚洲高清揄拍自拍一品区 | 国产猛烈高潮尖叫视频免费 | 亚洲乱亚洲乱妇50p | 福利一区二区三区视频在线观看 | 国产激情一区二区三区 | 1000部夫妻午夜免费 | 国产一区二区不卡老阿姨 | 国产绳艺sm调教室论坛 | 国精品人妻无码一区二区三区蜜柚 | 精品国产国产综合精品 | 色偷偷人人澡人人爽人人模 | 男人扒开女人内裤强吻桶进去 | 中文字幕无码免费久久9一区9 | 亚洲精品一区二区三区婷婷月 | 女人色极品影院 | 久久久久久久久888 | 精品久久久中文字幕人妻 | 久久精品人妻少妇一区二区三区 | 亚洲中文字幕无码中文字在线 | 国产精品久久国产精品99 | 四虎国产精品免费久久 | 99riav国产精品视频 | 亚洲色www成人永久网址 | 乱人伦中文视频在线观看 | 亚洲爆乳无码专区 | 日本xxxx色视频在线观看免费 | 无码人妻av免费一区二区三区 | 国产人妻精品一区二区三区 | 亚洲欧美中文字幕5发布 | 内射巨臀欧美在线视频 | 日本饥渴人妻欲求不满 | 亚洲无人区午夜福利码高清完整版 | 无码av岛国片在线播放 | 国语自产偷拍精品视频偷 | 亚洲爆乳无码专区 | 亚洲国产综合无码一区 | 5858s亚洲色大成网站www | 久久久久久九九精品久 | 伊人久久婷婷五月综合97色 | 无码中文字幕色专区 | 国产麻豆精品精东影业av网站 | 一个人看的视频www在线 | av无码电影一区二区三区 | 女人被男人躁得好爽免费视频 | 欧美 丝袜 自拍 制服 另类 | 亚洲国产精华液网站w | 国产激情无码一区二区app | 一区二区三区高清视频一 | 色婷婷香蕉在线一区二区 | 老司机亚洲精品影院 | 国产av一区二区精品久久凹凸 | 2020久久超碰国产精品最新 | 人人妻人人澡人人爽欧美精品 | 日韩人妻无码中文字幕视频 | 国产高清av在线播放 | 十八禁视频网站在线观看 | 午夜理论片yy44880影院 | 国产精品国产自线拍免费软件 | 日韩av无码一区二区三区 | 国产亚洲精品久久久闺蜜 | 欧美日本日韩 | 久久99精品国产麻豆蜜芽 | 大肉大捧一进一出视频出来呀 | 精品成人av一区二区三区 | 人妻少妇精品视频专区 | 亚洲国产成人a精品不卡在线 | 亚洲综合精品香蕉久久网 | 久久久久成人精品免费播放动漫 | 波多野结衣乳巨码无在线观看 | 国产三级精品三级男人的天堂 | 国产超碰人人爽人人做人人添 | 国产后入清纯学生妹 | 久久婷婷五月综合色国产香蕉 | 久久精品人妻少妇一区二区三区 | 国产亚洲精品久久久ai换 | 亚洲精品成a人在线观看 | 99久久精品国产一区二区蜜芽 | 久久亚洲精品成人无码 | 亚洲精品成人av在线 | 性色欲情网站iwww九文堂 | 98国产精品综合一区二区三区 | 人妻少妇精品久久 | 亚洲狠狠色丁香婷婷综合 | 久久熟妇人妻午夜寂寞影院 | 欧美怡红院免费全部视频 | 久久97精品久久久久久久不卡 | 无码任你躁久久久久久久 | 日韩精品久久久肉伦网站 | 精品久久久中文字幕人妻 | 97久久国产亚洲精品超碰热 | 人妻少妇精品久久 | 欧美日韩视频无码一区二区三 | 精品无码国产自产拍在线观看蜜 | 国产精品99久久精品爆乳 | 大色综合色综合网站 | 人人超人人超碰超国产 | 国内老熟妇对白xxxxhd | 俺去俺来也在线www色官网 | 亚洲色欲久久久综合网东京热 | 一本大道久久东京热无码av | 天堂一区人妻无码 | 国产色xx群视频射精 | 国产福利视频一区二区 | 久久国产精品_国产精品 | 日韩精品成人一区二区三区 | 欧美兽交xxxx×视频 | 亚洲一区二区三区偷拍女厕 | 亚洲国产欧美国产综合一区 | 色婷婷综合中文久久一本 | 亚洲最大成人网站 | 初尝人妻少妇中文字幕 | 国产av一区二区精品久久凹凸 | 1000部夫妻午夜免费 | 人妻有码中文字幕在线 | 沈阳熟女露脸对白视频 | 人妻少妇精品久久 | 国产乱人偷精品人妻a片 | 偷窥日本少妇撒尿chinese | 亚洲日韩av一区二区三区四区 | 欧美日韩一区二区免费视频 | 亚洲精品国产品国语在线观看 | 国产激情精品一区二区三区 | 亚洲日本在线电影 | 亚洲热妇无码av在线播放 | 乌克兰少妇性做爰 | 97精品人妻一区二区三区香蕉 | 中文字幕精品av一区二区五区 | 天堂а√在线中文在线 | 成在人线av无码免费 | 天堂在线观看www | 成人精品一区二区三区中文字幕 | 国产av一区二区精品久久凹凸 | 亚洲a无码综合a国产av中文 | av无码电影一区二区三区 | 成人无码精品一区二区三区 | 乱人伦人妻中文字幕无码 | 亚洲自偷自拍另类第1页 | 性啪啪chinese东北女人 | 国产精品手机免费 | 欧美日韩一区二区综合 | 日日摸天天摸爽爽狠狠97 | 性欧美大战久久久久久久 | 国产人妻精品一区二区三区不卡 | 国产精品国产三级国产专播 | 丰满人妻被黑人猛烈进入 | 国产国语老龄妇女a片 | 少妇无码一区二区二三区 | 黑人玩弄人妻中文在线 | 亚洲综合无码一区二区三区 | 久久zyz资源站无码中文动漫 | 一本久久伊人热热精品中文字幕 | 在线播放亚洲第一字幕 | 精品人妻中文字幕有码在线 | 曰韩无码二三区中文字幕 | 天堂а√在线地址中文在线 | 成人无码视频在线观看网站 | 久久久精品人妻久久影视 | 1000部啪啪未满十八勿入下载 | 国产精品毛多多水多 | 国产人妻精品午夜福利免费 | 成人免费视频一区二区 | 欧美色就是色 | 亚洲中文字幕久久无码 | 国产精品久久精品三级 | 中文字幕av无码一区二区三区电影 | 无码av免费一区二区三区试看 | 成人影院yy111111在线观看 | 色诱久久久久综合网ywww | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 日韩av无码一区二区三区不卡 | 丰满妇女强制高潮18xxxx | 女人被男人躁得好爽免费视频 | 人人妻人人澡人人爽人人精品 | 欧美成人高清在线播放 | 大肉大捧一进一出好爽视频 | 成人无码视频在线观看网站 | www国产亚洲精品久久网站 | 日韩少妇内射免费播放 | 2020久久超碰国产精品最新 | 国产熟妇高潮叫床视频播放 | 无码av免费一区二区三区试看 | 国产午夜无码视频在线观看 | 老子影院午夜精品无码 | 国产精品久久久久久亚洲影视内衣 | 亚洲人成人无码网www国产 | 荫蒂添的好舒服视频囗交 | 无码午夜成人1000部免费视频 | 久久精品国产一区二区三区肥胖 | 久久久成人毛片无码 | 国产麻豆精品精东影业av网站 | 亚无码乱人伦一区二区 | 国产婷婷色一区二区三区在线 | 日本精品少妇一区二区三区 | 无码国内精品人妻少妇 | 波多野结衣一区二区三区av免费 | 亚洲人亚洲人成电影网站色 | 久久久久成人片免费观看蜜芽 | 亚洲中文字幕无码中字 | 欧美亚洲日韩国产人成在线播放 | 在线欧美精品一区二区三区 | 国产精品无码mv在线观看 | 国产黄在线观看免费观看不卡 | 无码国产色欲xxxxx视频 | 亚洲国精产品一二二线 | 小泽玛莉亚一区二区视频在线 | 丝袜足控一区二区三区 | 国产精品人妻一区二区三区四 | 99久久99久久免费精品蜜桃 | 18无码粉嫩小泬无套在线观看 | 久久国产精品偷任你爽任你 | 亚洲精品一区二区三区大桥未久 | 中文亚洲成a人片在线观看 | 青春草在线视频免费观看 | 色狠狠av一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 亚洲成色在线综合网站 | 无码国产乱人伦偷精品视频 | 国产99久久精品一区二区 | 久久99精品久久久久婷婷 | 国产情侣作爱视频免费观看 | 国产精品无码一区二区桃花视频 | 国产精品va在线播放 | 国产成人精品一区二区在线小狼 | 搡女人真爽免费视频大全 | 中文字幕乱妇无码av在线 | 国产在线无码精品电影网 | 久激情内射婷内射蜜桃人妖 | 99久久99久久免费精品蜜桃 | 精品一区二区不卡无码av | 综合激情五月综合激情五月激情1 | 久久久av男人的天堂 | 国产精品-区区久久久狼 | 久久无码中文字幕免费影院蜜桃 | 久久久久成人精品免费播放动漫 | 人妻少妇精品无码专区动漫 | 欧美黑人乱大交 | 久久久久久av无码免费看大片 | 亚洲区小说区激情区图片区 | 日本肉体xxxx裸交 | 中文字幕日产无线码一区 | 国产国产精品人在线视 | 亚洲国产成人a精品不卡在线 | 欧美成人午夜精品久久久 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲成在人网站无码天堂 | 国产精品久免费的黄网站 | 午夜丰满少妇性开放视频 | 成人aaa片一区国产精品 | 中文字幕无码人妻少妇免费 | 国产精品美女久久久网av | 无码国模国产在线观看 | 女人被爽到呻吟gif动态图视看 | 国产精品资源一区二区 | 99在线 | 亚洲 | 我要看www免费看插插视频 | 波多野结衣aⅴ在线 | 国产激情一区二区三区 | 蜜臀aⅴ国产精品久久久国产老师 | 欧美变态另类xxxx | 蜜桃无码一区二区三区 | 欧美老熟妇乱xxxxx | 亚洲精品久久久久久久久久久 | 樱花草在线社区www | 国产内射爽爽大片视频社区在线 | 97精品国产97久久久久久免费 | 日韩欧美中文字幕在线三区 | 丰满少妇人妻久久久久久 | 精品人妻人人做人人爽夜夜爽 | 清纯唯美经典一区二区 | 99riav国产精品视频 | 午夜嘿嘿嘿影院 | 日产精品99久久久久久 | 欧美国产日韩久久mv | 少妇被粗大的猛进出69影院 | 国产精品久久久久影院嫩草 | 精品国产福利一区二区 | 中文字幕无码人妻少妇免费 | 两性色午夜视频免费播放 | 76少妇精品导航 | 欧美丰满熟妇xxxx | 波多野结衣高清一区二区三区 | 国精产品一区二区三区 | 久久精品国产大片免费观看 | 野狼第一精品社区 | 偷窥日本少妇撒尿chinese | 野外少妇愉情中文字幕 | 无码毛片视频一区二区本码 | 天堂在线观看www | 人妻尝试又大又粗久久 | 亚洲成av人片在线观看无码不卡 | 国产精品多人p群无码 | 99精品视频在线观看免费 | 牛和人交xxxx欧美 | 偷窥村妇洗澡毛毛多 | 精品久久久久久人妻无码中文字幕 | 风流少妇按摩来高潮 | 日本熟妇人妻xxxxx人hd | 亚洲欧美日韩综合久久久 | 日韩人妻无码一区二区三区久久99 | 亚洲人亚洲人成电影网站色 | 久久综合网欧美色妞网 | 免费人成在线观看网站 | 久久人人爽人人爽人人片ⅴ | 无码一区二区三区在线观看 | 国产 浪潮av性色四虎 | 无码一区二区三区在线观看 | 青草青草久热国产精品 | 亚洲精品一区三区三区在线观看 | 丰满诱人的人妻3 | 免费中文字幕日韩欧美 | 日本精品人妻无码77777 天堂一区人妻无码 | 又湿又紧又大又爽a视频国产 | 国产成人精品三级麻豆 | 久久久久se色偷偷亚洲精品av | 高潮毛片无遮挡高清免费视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 精品欧洲av无码一区二区三区 | 无码福利日韩神码福利片 | 国产亚洲精品久久久久久久久动漫 | 亚洲国产精品久久久久久 | 2020久久超碰国产精品最新 | 丁香花在线影院观看在线播放 | 成人精品天堂一区二区三区 | 搡女人真爽免费视频大全 | 欧洲精品码一区二区三区免费看 | 婷婷丁香六月激情综合啪 | 国产人妻精品一区二区三区 | 无码毛片视频一区二区本码 | 欧美老妇交乱视频在线观看 | 日欧一片内射va在线影院 | 国内综合精品午夜久久资源 | 国产精品久久久一区二区三区 | 国产国语老龄妇女a片 | 久久久中文久久久无码 | 又黄又爽又色的视频 | 日本熟妇大屁股人妻 | 亚洲中文字幕无码中文字在线 | 国产精品久久久午夜夜伦鲁鲁 | 无码国产激情在线观看 | 国产熟妇另类久久久久 | 久久久成人毛片无码 | 精品一区二区不卡无码av | 又湿又紧又大又爽a视频国产 | 色欲av亚洲一区无码少妇 | 国产乱人偷精品人妻a片 | 色综合久久网 | 日本精品人妻无码77777 天堂一区人妻无码 | www国产精品内射老师 | 精品无码一区二区三区爱欲 | 夜精品a片一区二区三区无码白浆 | 撕开奶罩揉吮奶头视频 | 人妻体内射精一区二区三四 | 欧美成人午夜精品久久久 | 国产精品手机免费 | 国产一区二区不卡老阿姨 | 一本久久伊人热热精品中文字幕 | 99在线 | 亚洲 | 亚洲日本va中文字幕 | 国产成人综合在线女婷五月99播放 | 免费观看的无遮挡av | 4hu四虎永久在线观看 | 日韩视频 中文字幕 视频一区 | 亚洲人成无码网www | 国产精品视频免费播放 | 又大又黄又粗又爽的免费视频 | ass日本丰满熟妇pics | 爽爽影院免费观看 | 国产午夜福利100集发布 | 国产无遮挡吃胸膜奶免费看 | 99麻豆久久久国产精品免费 | 熟女少妇人妻中文字幕 | 亚洲国产av精品一区二区蜜芽 | 国产黑色丝袜在线播放 | 亚洲七七久久桃花影院 | 一二三四社区在线中文视频 | 国内精品久久毛片一区二区 | 久久国产36精品色熟妇 | 综合激情五月综合激情五月激情1 | 久久精品中文字幕大胸 | 欧美 日韩 亚洲 在线 | 日本护士毛茸茸高潮 | 久久人人97超碰a片精品 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲成av人影院在线观看 | 麻豆md0077饥渴少妇 | 亚洲第一无码av无码专区 | 日韩精品a片一区二区三区妖精 | 蜜桃臀无码内射一区二区三区 | 久久精品99久久香蕉国产色戒 | 国产人妻人伦精品1国产丝袜 | 少妇被黑人到高潮喷出白浆 | 国产绳艺sm调教室论坛 | 欧美xxxx黑人又粗又长 | 人妻夜夜爽天天爽三区 | 国内综合精品午夜久久资源 | 久久 国产 尿 小便 嘘嘘 | 免费视频欧美无人区码 | 丁香啪啪综合成人亚洲 | av小次郎收藏 | 疯狂三人交性欧美 | 日韩欧美成人免费观看 | 激情国产av做激情国产爱 | 国产成人久久精品流白浆 | 1000部夫妻午夜免费 | 人妻熟女一区 | 女人被爽到呻吟gif动态图视看 | 香港三级日本三级妇三级 | 久久亚洲国产成人精品性色 | 久久亚洲a片com人成 | 国产香蕉97碰碰久久人人 | 人妻无码αv中文字幕久久琪琪布 | 国产精品办公室沙发 | 97久久精品无码一区二区 | 国产超级va在线观看视频 | 亚洲精品久久久久久一区二区 | 丰满少妇高潮惨叫视频 | 中文字幕亚洲情99在线 | 国产亚av手机在线观看 | 成人动漫在线观看 | 亚洲精品鲁一鲁一区二区三区 | 久久精品99久久香蕉国产色戒 | 色综合久久久久综合一本到桃花网 | 久久综合香蕉国产蜜臀av | 亚洲国产高清在线观看视频 | 精品无码国产一区二区三区av | 亚洲国产精品无码一区二区三区 | аⅴ资源天堂资源库在线 | 精品国偷自产在线 | 日韩 欧美 动漫 国产 制服 | 欧美丰满少妇xxxx性 | 麻豆精品国产精华精华液好用吗 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产精品-区区久久久狼 | 久久综合久久自在自线精品自 | 白嫩日本少妇做爰 | 无码吃奶揉捏奶头高潮视频 | 亚洲啪av永久无码精品放毛片 | 精品厕所偷拍各类美女tp嘘嘘 | 国产精品内射视频免费 | 麻豆国产丝袜白领秘书在线观看 | 久久精品国产一区二区三区肥胖 | 日本爽爽爽爽爽爽在线观看免 | 欧美日韩一区二区免费视频 | 国产午夜视频在线观看 | 欧洲精品码一区二区三区免费看 | 亚洲呦女专区 | 性色av无码免费一区二区三区 | 丁香花在线影院观看在线播放 | 国产绳艺sm调教室论坛 | 无码精品人妻一区二区三区av | 国产成人精品三级麻豆 | 人人爽人人澡人人人妻 | 77777熟女视频在线观看 а天堂中文在线官网 | 日本熟妇浓毛 | 国产精品永久免费视频 | 狠狠亚洲超碰狼人久久 | 国产精品永久免费视频 | 成人精品天堂一区二区三区 | 国产肉丝袜在线观看 | 少妇无套内谢久久久久 | 夫妻免费无码v看片 | 精品一二三区久久aaa片 | 中文字幕无线码免费人妻 | 蜜桃视频韩日免费播放 | 亚洲成av人在线观看网址 | 久久精品99久久香蕉国产色戒 | 久久久久久久久888 | 日本熟妇人妻xxxxx人hd | 人妻天天爽夜夜爽一区二区 | 国产午夜亚洲精品不卡 | 成人免费视频在线观看 | 日韩成人一区二区三区在线观看 | 爱做久久久久久 | 日日干夜夜干 | 美女黄网站人色视频免费国产 | 99er热精品视频 | 亚洲乱亚洲乱妇50p | 狂野欧美性猛xxxx乱大交 | 久久久中文久久久无码 | 网友自拍区视频精品 | 亚洲国产精品一区二区美利坚 | 亚洲の无码国产の无码步美 | 国产精品久久久久久久影院 | 国精产品一区二区三区 | 兔费看少妇性l交大片免费 | 亚洲色在线无码国产精品不卡 | 婷婷五月综合激情中文字幕 | 国产疯狂伦交大片 | 久久久精品国产sm最大网站 | 日本一卡2卡3卡四卡精品网站 | 久久国产36精品色熟妇 | 成人无码精品1区2区3区免费看 | 波多野结衣av一区二区全免费观看 | 成人免费视频在线观看 | 日本肉体xxxx裸交 | 日产精品99久久久久久 | 一本大道伊人av久久综合 | 亚洲 欧美 激情 小说 另类 | 97夜夜澡人人爽人人喊中国片 | 国产麻豆精品一区二区三区v视界 | 青青青爽视频在线观看 | 黑人玩弄人妻中文在线 |