3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲熟熟妇xxxx | 无码精品人妻一区二区三区av | 一个人看的www免费视频在线观看 | 国产麻豆精品精东影业av网站 | 人人澡人人妻人人爽人人蜜桃 | 日本精品人妻无码免费大全 | 国产精品国产自线拍免费软件 | 精品国产av色一区二区深夜久久 | 未满成年国产在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产国产精品人在线视 | 精品亚洲成av人在线观看 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲乱码国产乱码精品精 | 日本欧美一区二区三区乱码 | 岛国片人妻三上悠亚 | 东京一本一道一二三区 | 无码吃奶揉捏奶头高潮视频 | 大乳丰满人妻中文字幕日本 | 亚洲第一网站男人都懂 | 国产精品二区一区二区aⅴ污介绍 | 国产亚洲精品久久久久久大师 | 亚洲男人av香蕉爽爽爽爽 | 一本色道婷婷久久欧美 | 亚洲 欧美 激情 小说 另类 | 日韩少妇内射免费播放 | 久久人妻内射无码一区三区 | 娇妻被黑人粗大高潮白浆 | 美女极度色诱视频国产 | 无码人妻久久一区二区三区不卡 | 无码任你躁久久久久久久 | aⅴ亚洲 日韩 色 图网站 播放 | 欧美兽交xxxx×视频 | 黑森林福利视频导航 | 亚洲一区二区三区国产精华液 | 国产无遮挡又黄又爽又色 | 欧美兽交xxxx×视频 | 乱码午夜-极国产极内射 | 国产成人无码午夜视频在线观看 | 久久国产精品偷任你爽任你 | 日本精品人妻无码免费大全 | 亚洲日本一区二区三区在线 | 久9re热视频这里只有精品 | 精品无码成人片一区二区98 | 熟妇人妻激情偷爽文 | 中文字幕日产无线码一区 | 无码人妻丰满熟妇区五十路百度 | 男女下面进入的视频免费午夜 | 国产精品亚洲lv粉色 | 欧美怡红院免费全部视频 | 97色伦图片97综合影院 | 亚洲成熟女人毛毛耸耸多 | 少妇无码av无码专区在线观看 | 国产综合久久久久鬼色 | 大肉大捧一进一出视频出来呀 | 亚洲精品www久久久 | 一本大道伊人av久久综合 | 国产精品福利视频导航 | 国产成人精品三级麻豆 | 国内精品人妻无码久久久影院蜜桃 | 久久亚洲a片com人成 | 国产口爆吞精在线视频 | а√天堂www在线天堂小说 | 国产三级精品三级男人的天堂 | 亚洲精品国偷拍自产在线麻豆 | 国产亚洲精品久久久久久国模美 | 亚洲va欧美va天堂v国产综合 | 欧美精品一区二区精品久久 | av香港经典三级级 在线 | 高中生自慰www网站 | 国产精品人妻一区二区三区四 | 精品熟女少妇av免费观看 | 欧美精品在线观看 | 亚洲国产精品毛片av不卡在线 | 亚洲日韩av一区二区三区中文 | 中文字幕人妻无码一区二区三区 | 亚洲中文字幕在线观看 | 欧美日韩人成综合在线播放 | 国产精品人人爽人人做我的可爱 | 国产激情艳情在线看视频 | 色噜噜亚洲男人的天堂 | 国产av一区二区三区最新精品 | 久久综合给合久久狠狠狠97色 | 国产成人精品无码播放 | 毛片内射-百度 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 人人妻人人澡人人爽欧美一区九九 | 欧美人与动性行为视频 | 国产两女互慰高潮视频在线观看 | 沈阳熟女露脸对白视频 | 强辱丰满人妻hd中文字幕 | 欧美freesex黑人又粗又大 | 欧美日韩一区二区综合 | 国产熟妇另类久久久久 | 国产人妻人伦精品1国产丝袜 | 亚洲阿v天堂在线 | 国产精品久久久久久久9999 | 骚片av蜜桃精品一区 | 国产精品丝袜黑色高跟鞋 | 大肉大捧一进一出好爽视频 | 亚洲精品国偷拍自产在线麻豆 | 狠狠cao日日穞夜夜穞av | 永久免费观看国产裸体美女 | 无码福利日韩神码福利片 | 国内揄拍国内精品人妻 | 日欧一片内射va在线影院 | 国产精品无码久久av | 97久久超碰中文字幕 | 99久久99久久免费精品蜜桃 | 少妇的肉体aa片免费 | 少妇无码吹潮 | 久久精品中文字幕大胸 | 中文字幕av无码一区二区三区电影 | 亚洲精品一区二区三区四区五区 | 中文字幕无码免费久久99 | 一本色道久久综合狠狠躁 | 久久 国产 尿 小便 嘘嘘 | 亚洲小说图区综合在线 | 动漫av网站免费观看 | 中文字幕无码日韩欧毛 | 中文精品久久久久人妻不卡 | 啦啦啦www在线观看免费视频 | 国产xxx69麻豆国语对白 | 噜噜噜亚洲色成人网站 | 精品国产乱码久久久久乱码 | 亚洲啪av永久无码精品放毛片 | 亚洲成av人片天堂网无码】 | 午夜不卡av免费 一本久久a久久精品vr综合 | 亚洲成a人片在线观看日本 | 人妻无码久久精品人妻 | 国产精品久久久 | 日本一卡2卡3卡四卡精品网站 | 国产人妻久久精品二区三区老狼 | 精品国产一区二区三区四区在线看 | 99麻豆久久久国产精品免费 | 伊人久久大香线蕉av一区二区 | 国产女主播喷水视频在线观看 | 国产 精品 自在自线 | 亚洲国产精品久久久天堂 | 成人一区二区免费视频 | 天干天干啦夜天干天2017 | 欧美日韩人成综合在线播放 | 曰本女人与公拘交酡免费视频 | 樱花草在线社区www | 玩弄人妻少妇500系列视频 | 中文字幕乱码亚洲无线三区 | 亚洲一区二区三区偷拍女厕 | 日本丰满熟妇videos | 日韩av无码一区二区三区不卡 | 天天综合网天天综合色 | 黑人粗大猛烈进出高潮视频 | 波多野结衣乳巨码无在线观看 | 99久久久无码国产精品免费 | 国产精品对白交换视频 | 国产农村乱对白刺激视频 | 欧美性生交活xxxxxdddd | 日本精品久久久久中文字幕 | 色诱久久久久综合网ywww | 动漫av网站免费观看 | 岛国片人妻三上悠亚 | 久久99精品国产麻豆 | 在线精品国产一区二区三区 | 大地资源网第二页免费观看 | 精品欧洲av无码一区二区三区 | 成人免费视频视频在线观看 免费 | 青春草在线视频免费观看 | 好爽又高潮了毛片免费下载 | 亚洲中文字幕无码一久久区 | 无码国模国产在线观看 | 国产做国产爱免费视频 | 1000部啪啪未满十八勿入下载 | 熟女俱乐部五十路六十路av | 久久精品一区二区三区四区 | 中文无码伦av中文字幕 | 色婷婷综合中文久久一本 | 国产精品毛多多水多 | 久久99精品国产.久久久久 | 亚洲第一网站男人都懂 | 欧美黑人性暴力猛交喷水 | 成人精品视频一区二区 | 人妻人人添人妻人人爱 | 成人无码影片精品久久久 | 国产av无码专区亚洲awww | 麻豆果冻传媒2021精品传媒一区下载 | 国产成人无码区免费内射一片色欲 | 亚洲日本va午夜在线电影 | 中文字幕无码乱人伦 | 一本久道久久综合婷婷五月 | 久久久www成人免费毛片 | 图片小说视频一区二区 | 国产精品.xx视频.xxtv | 亚洲中文字幕在线无码一区二区 | 久久人人爽人人爽人人片ⅴ | 无码乱肉视频免费大全合集 | 国产va免费精品观看 | 日本乱偷人妻中文字幕 | av在线亚洲欧洲日产一区二区 | 性开放的女人aaa片 | 一本久久伊人热热精品中文字幕 | 午夜精品久久久久久久久 | а√资源新版在线天堂 | 蜜桃无码一区二区三区 | 真人与拘做受免费视频一 | 高中生自慰www网站 | 又紧又大又爽精品一区二区 | 久久综合狠狠综合久久综合88 | 国产精品久久久一区二区三区 | 国内综合精品午夜久久资源 | 风流少妇按摩来高潮 | 国产精品久久久久久无码 | 人人妻人人藻人人爽欧美一区 | 欧美老人巨大xxxx做受 | 国产另类ts人妖一区二区 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久亚洲精品中文字幕无男同 | 免费无码午夜福利片69 | 亚洲精品久久久久中文第一幕 | 日本护士xxxxhd少妇 | 日韩av无码一区二区三区不卡 | 欧美丰满少妇xxxx性 | 成人精品视频一区二区三区尤物 | 久久久精品人妻久久影视 | 性生交大片免费看l | 东京无码熟妇人妻av在线网址 | 丰腴饱满的极品熟妇 | 亚洲中文字幕成人无码 | 国内精品久久毛片一区二区 | 日韩精品成人一区二区三区 | 黑人巨大精品欧美黑寡妇 | 亚洲人成网站免费播放 | 国产欧美熟妇另类久久久 | 欧美国产日韩久久mv | 成人女人看片免费视频放人 | 精品无人区无码乱码毛片国产 | 国产av无码专区亚洲a∨毛片 | 人妻与老人中文字幕 | 人妻少妇被猛烈进入中文字幕 | 精品无码国产一区二区三区av | 亚洲欧美日韩国产精品一区二区 | 成人无码视频在线观看网站 | 亚洲男人av天堂午夜在 | 精品无码一区二区三区爱欲 | 亚洲精品一区二区三区大桥未久 | 国产精品无码久久av | 女人被爽到呻吟gif动态图视看 | 亚洲中文字幕在线无码一区二区 | 欧洲精品码一区二区三区免费看 | 性做久久久久久久免费看 | 国产明星裸体无码xxxx视频 | 中文字幕无码av激情不卡 | 成人女人看片免费视频放人 | 性欧美疯狂xxxxbbbb | 午夜精品久久久久久久久 | 久热国产vs视频在线观看 | 嫩b人妻精品一区二区三区 | 中文字幕人妻无码一夲道 | 久久国产劲爆∧v内射 | 红桃av一区二区三区在线无码av | a片免费视频在线观看 | 欧美成人免费全部网站 | 丰满肥臀大屁股熟妇激情视频 | 国产热a欧美热a在线视频 | 性生交大片免费看l | 激情内射日本一区二区三区 | 丰满肥臀大屁股熟妇激情视频 | 国产亚洲欧美在线专区 | 久久亚洲精品中文字幕无男同 | 国产精品国产三级国产专播 | 熟女少妇在线视频播放 | 国产真实乱对白精彩久久 | 人人爽人人澡人人人妻 | 东京无码熟妇人妻av在线网址 | 少妇人妻偷人精品无码视频 | 澳门永久av免费网站 | 亚洲狠狠色丁香婷婷综合 | 中文字幕乱妇无码av在线 | 国语自产偷拍精品视频偷 | 国产精品人妻一区二区三区四 | 国产成人精品一区二区在线小狼 | 久久精品99久久香蕉国产色戒 | 在线 国产 欧美 亚洲 天堂 | 人人澡人人透人人爽 | 国产激情艳情在线看视频 | 狠狠色丁香久久婷婷综合五月 | 亚洲色大成网站www国产 | 日韩成人一区二区三区在线观看 | 亚洲国产欧美国产综合一区 | 奇米影视888欧美在线观看 | 澳门永久av免费网站 | 三上悠亚人妻中文字幕在线 | 无码乱肉视频免费大全合集 | 国产精品久久久久久久9999 | 综合网日日天干夜夜久久 | 久久久久久a亚洲欧洲av冫 | 久久精品国产一区二区三区 | 免费观看激色视频网站 | 久久精品丝袜高跟鞋 | 久久久久久久女国产乱让韩 | 3d动漫精品啪啪一区二区中 | 日韩精品乱码av一区二区 | 久9re热视频这里只有精品 | 76少妇精品导航 | 波多野结衣乳巨码无在线观看 | 欧美日韩一区二区免费视频 | 美女极度色诱视频国产 | 奇米影视7777久久精品人人爽 | 亚洲色偷偷男人的天堂 | 欧美激情一区二区三区成人 | 亚洲成熟女人毛毛耸耸多 | 国产无套粉嫩白浆在线 | 噜噜噜亚洲色成人网站 | 老头边吃奶边弄进去呻吟 | 欧美丰满老熟妇xxxxx性 | 粉嫩少妇内射浓精videos | 亚洲色成人中文字幕网站 | 内射巨臀欧美在线视频 | 午夜免费福利小电影 | 久久人人97超碰a片精品 | 国产精品鲁鲁鲁 | 午夜熟女插插xx免费视频 | 成人片黄网站色大片免费观看 | 国产精品久久国产三级国 | 色诱久久久久综合网ywww | 国产人妻精品午夜福利免费 | 美女毛片一区二区三区四区 | 亚洲熟女一区二区三区 | 水蜜桃av无码 | 国产午夜亚洲精品不卡 | 无码人妻少妇伦在线电影 | 成人一在线视频日韩国产 | 亚洲色欲色欲天天天www | 亚洲精品中文字幕久久久久 | 麻豆人妻少妇精品无码专区 | 欧美日韩一区二区免费视频 | 国产精品无码久久av | 狠狠色丁香久久婷婷综合五月 | 国产在线精品一区二区高清不卡 | 99精品无人区乱码1区2区3区 | 在线观看国产午夜福利片 | 精品国产青草久久久久福利 | 精品无码国产一区二区三区av | 97人妻精品一区二区三区 | 国产精品久久久久无码av色戒 | 国模大胆一区二区三区 | 欧美黑人乱大交 | 亚洲国产精品一区二区第一页 | 日本又色又爽又黄的a片18禁 | 色情久久久av熟女人妻网站 | 国产成人无码区免费内射一片色欲 | 国产精品办公室沙发 | 成年美女黄网站色大免费视频 | 国产无av码在线观看 | 波多野结衣 黑人 | 午夜丰满少妇性开放视频 | 国产一精品一av一免费 | 成人aaa片一区国产精品 | 中国女人内谢69xxxx | 精品 日韩 国产 欧美 视频 | 婷婷五月综合激情中文字幕 | 无码精品人妻一区二区三区av | 未满小14洗澡无码视频网站 | 高中生自慰www网站 | 亚洲日韩精品欧美一区二区 | 免费无码的av片在线观看 | 无码人妻精品一区二区三区下载 | 人妻少妇被猛烈进入中文字幕 | 久久zyz资源站无码中文动漫 | 亚洲中文无码av永久不收费 | 国产精品第一国产精品 | 131美女爱做视频 | 亚洲精品国产a久久久久久 | 国产成人无码av片在线观看不卡 | 国产艳妇av在线观看果冻传媒 | 国产乱子伦视频在线播放 | 高清不卡一区二区三区 | 漂亮人妻洗澡被公强 日日躁 | 国产亚洲精品精品国产亚洲综合 | 国产成人无码专区 | 久久久久成人片免费观看蜜芽 | 久久精品无码一区二区三区 | 午夜精品一区二区三区的区别 | 97精品人妻一区二区三区香蕉 | 国产综合在线观看 | 国产免费无码一区二区视频 | 国产人妻精品一区二区三区不卡 | 一个人免费观看的www视频 | 欧美老妇交乱视频在线观看 | 无码人妻丰满熟妇区五十路百度 | 国产精品对白交换视频 | 熟妇激情内射com | 国产av剧情md精品麻豆 | 亚洲s码欧洲m码国产av | 色综合视频一区二区三区 | 亚洲国产精品无码一区二区三区 | 永久免费精品精品永久-夜色 | 亚洲精品国产精品乱码视色 | 国产成人一区二区三区在线观看 | 国产精品办公室沙发 | 国精产品一品二品国精品69xx | 亚洲中文无码av永久不收费 | 给我免费的视频在线观看 | 久久亚洲中文字幕无码 | 成人性做爰aaa片免费看不忠 | 骚片av蜜桃精品一区 | 亚洲中文字幕无码一久久区 | 国产成人亚洲综合无码 | 日韩人妻无码一区二区三区久久99 | 久久久久99精品成人片 | 亚洲日韩中文字幕在线播放 | 国产真实伦对白全集 | 亚洲一区二区三区香蕉 | 久久精品人人做人人综合 | 在线播放免费人成毛片乱码 | 丝袜足控一区二区三区 | 内射爽无广熟女亚洲 | 日本精品少妇一区二区三区 | 色婷婷综合中文久久一本 | а天堂中文在线官网 | 中文字幕久久久久人妻 | 帮老师解开蕾丝奶罩吸乳网站 | 欧美日韩一区二区免费视频 | 300部国产真实乱 | 大地资源网第二页免费观看 | 内射巨臀欧美在线视频 | 婷婷综合久久中文字幕蜜桃三电影 | 成人免费无码大片a毛片 | 天海翼激烈高潮到腰振不止 | 国产精品亚洲五月天高清 | 亚欧洲精品在线视频免费观看 | 免费无码肉片在线观看 | 亚洲熟女一区二区三区 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲午夜无码久久 | 日日摸夜夜摸狠狠摸婷婷 | 午夜无码区在线观看 | 无码一区二区三区在线 | 狠狠cao日日穞夜夜穞av | 麻豆蜜桃av蜜臀av色欲av | 国产免费久久精品国产传媒 | 高潮毛片无遮挡高清免费视频 | 久久国产劲爆∧v内射 | 性欧美疯狂xxxxbbbb | 午夜精品久久久久久久 | 亚洲呦女专区 | 国产精品久久久久久无码 | 国产精品无码mv在线观看 | 亚洲性无码av中文字幕 | 久久久久人妻一区精品色欧美 | 六月丁香婷婷色狠狠久久 | 对白脏话肉麻粗话av | 久久天天躁狠狠躁夜夜免费观看 | 在线欧美精品一区二区三区 | 久久国产精品偷任你爽任你 | 亚洲欧美国产精品专区久久 | 大色综合色综合网站 | 欧美真人作爱免费视频 | 亚洲自偷自拍另类第1页 | 欧美国产日产一区二区 | 女人被男人躁得好爽免费视频 | 久久亚洲a片com人成 | 中文字幕色婷婷在线视频 | 免费观看又污又黄的网站 | 性欧美大战久久久久久久 | 99在线 | 亚洲 | 亚洲小说春色综合另类 | 中文字幕久久久久人妻 | 天堂久久天堂av色综合 | 欧美老妇与禽交 | 国产口爆吞精在线视频 | 女高中生第一次破苞av | 偷窥村妇洗澡毛毛多 | 水蜜桃av无码 | 国产成人综合色在线观看网站 | 久久久精品456亚洲影院 | 少妇人妻大乳在线视频 | 午夜精品久久久久久久 | 日韩人妻少妇一区二区三区 | 国产午夜亚洲精品不卡下载 | 成熟女人特级毛片www免费 | 国产真实伦对白全集 | 性欧美大战久久久久久久 | 日本免费一区二区三区最新 | 免费网站看v片在线18禁无码 | 久久久久久亚洲精品a片成人 | 1000部夫妻午夜免费 | 久久精品国产大片免费观看 | 成人女人看片免费视频放人 | 女人被男人躁得好爽免费视频 | 欧美成人免费全部网站 | 99精品无人区乱码1区2区3区 | 色婷婷久久一区二区三区麻豆 | 在线播放无码字幕亚洲 | 99精品国产综合久久久久五月天 | 成 人影片 免费观看 | 亚洲精品欧美二区三区中文字幕 | 麻豆国产人妻欲求不满 | 爱做久久久久久 | 性色欲情网站iwww九文堂 | 精品国产成人一区二区三区 | 无码国产激情在线观看 | 清纯唯美经典一区二区 | 中文字幕乱妇无码av在线 | a国产一区二区免费入口 | 精品国产一区二区三区四区 | 国産精品久久久久久久 | 99久久婷婷国产综合精品青草免费 | 亚洲成av人在线观看网址 | 人人妻人人澡人人爽欧美一区九九 | 久久精品人妻少妇一区二区三区 | 精品乱子伦一区二区三区 | 亚洲无人区午夜福利码高清完整版 | 久久久久久久女国产乱让韩 | 色婷婷久久一区二区三区麻豆 | 国产精品无码一区二区三区不卡 | 麻豆国产97在线 | 欧洲 | 国产无套内射久久久国产 | 中文字幕乱码亚洲无线三区 | 天堂а√在线中文在线 | 99国产欧美久久久精品 | a片在线免费观看 | 亚洲色在线无码国产精品不卡 | 午夜精品一区二区三区在线观看 | 强伦人妻一区二区三区视频18 | 亚洲精品一区二区三区大桥未久 | 色噜噜亚洲男人的天堂 | 人妻有码中文字幕在线 | 纯爱无遮挡h肉动漫在线播放 | 亚洲精品一区二区三区在线观看 | 99久久婷婷国产综合精品青草免费 | 国产精品久久久久久无码 | 激情内射亚州一区二区三区爱妻 | 无套内谢的新婚少妇国语播放 | 国语精品一区二区三区 | 国产情侣作爱视频免费观看 | 樱花草在线社区www | 久久亚洲精品中文字幕无男同 | 一本久道高清无码视频 | 奇米影视888欧美在线观看 | 十八禁真人啪啪免费网站 | 少妇久久久久久人妻无码 | 爽爽影院免费观看 | 国产偷抇久久精品a片69 | 狠狠综合久久久久综合网 | 国产免费无码一区二区视频 | 色婷婷综合中文久久一本 | 88国产精品欧美一区二区三区 | 精品无码成人片一区二区98 | 亚洲精品国产精品乱码视色 | 1000部啪啪未满十八勿入下载 | 欧美阿v高清资源不卡在线播放 | 欧美 日韩 人妻 高清 中文 | 一本加勒比波多野结衣 | 亚洲精品一区二区三区大桥未久 | 丰满人妻一区二区三区免费视频 | 久久久精品456亚洲影院 | 无码av岛国片在线播放 | 精品国偷自产在线视频 | 99在线 | 亚洲 | 中文字幕人妻无码一夲道 | 国产精品久久久久9999小说 | 欧洲vodafone精品性 | 中文字幕av日韩精品一区二区 | 欧美刺激性大交 | 中文字幕日韩精品一区二区三区 | 国色天香社区在线视频 | 国产精品手机免费 | 国产偷自视频区视频 | 亚洲精品鲁一鲁一区二区三区 | 国精产品一品二品国精品69xx | 亚洲一区二区三区国产精华液 | 国产精品国产三级国产专播 | 中文字幕+乱码+中文字幕一区 | 88国产精品欧美一区二区三区 | 丰满人妻翻云覆雨呻吟视频 | 免费无码肉片在线观看 | 撕开奶罩揉吮奶头视频 | 性啪啪chinese东北女人 | 秋霞成人午夜鲁丝一区二区三区 | 久久久久国色av免费观看性色 | 午夜肉伦伦影院 | 国产成人亚洲综合无码 | 亚洲精品综合一区二区三区在线 | 任你躁在线精品免费 | 久久无码人妻影院 | 欧美阿v高清资源不卡在线播放 | 色爱情人网站 | www国产亚洲精品久久网站 | 国产av一区二区三区最新精品 | 国产成人一区二区三区别 | 中文字幕人妻丝袜二区 | 人妻熟女一区 | 欧美第一黄网免费网站 | 精品无码国产一区二区三区av | 午夜丰满少妇性开放视频 | 久久国产精品萌白酱免费 | 久久 国产 尿 小便 嘘嘘 | 麻豆果冻传媒2021精品传媒一区下载 | 日本乱人伦片中文三区 | 亚洲综合色区中文字幕 | 亚洲春色在线视频 | 精品aⅴ一区二区三区 | 日韩视频 中文字幕 视频一区 | 久久久久久九九精品久 | 精品无码成人片一区二区98 | 东京热一精品无码av | 国产后入清纯学生妹 | a在线观看免费网站大全 | 欧美性生交活xxxxxdddd | 麻豆人妻少妇精品无码专区 | 久久久成人毛片无码 | 男女猛烈xx00免费视频试看 | 久久精品国产一区二区三区肥胖 | 奇米影视7777久久精品人人爽 | 大屁股大乳丰满人妻 | 久久婷婷五月综合色国产香蕉 | 亚洲日韩av一区二区三区四区 | 欧美高清在线精品一区 | 国产激情无码一区二区 | 国产精品高潮呻吟av久久 | 欧美国产日产一区二区 | 久久综合网欧美色妞网 | 国产高潮视频在线观看 | 无码国产乱人伦偷精品视频 | 丰满少妇人妻久久久久久 | 日韩av无码一区二区三区不卡 | 最新版天堂资源中文官网 | 国产内射爽爽大片视频社区在线 | 婷婷色婷婷开心五月四房播播 | 亚洲日韩av一区二区三区四区 | 亚洲成av人影院在线观看 | 国内精品久久毛片一区二区 | 天天av天天av天天透 | 又粗又大又硬又长又爽 | 无码一区二区三区在线 | 国产精品美女久久久网av | 国产国语老龄妇女a片 | 2019nv天堂香蕉在线观看 | 捆绑白丝粉色jk震动捧喷白浆 | 日韩无套无码精品 | 亚洲区小说区激情区图片区 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲日韩av一区二区三区四区 | 色一情一乱一伦一视频免费看 | 国产99久久精品一区二区 | 国产九九九九九九九a片 | 少妇性l交大片欧洲热妇乱xxx | 免费无码的av片在线观看 | 亚洲精品成人福利网站 | 久久午夜无码鲁丝片午夜精品 | 男女下面进入的视频免费午夜 | 国产精品18久久久久久麻辣 | 中文字幕+乱码+中文字幕一区 | 色五月五月丁香亚洲综合网 | 久久久精品人妻久久影视 | 色欲人妻aaaaaaa无码 | 国产激情无码一区二区app | 日本护士毛茸茸高潮 | 亚洲小说图区综合在线 | 玩弄少妇高潮ⅹxxxyw | 大胆欧美熟妇xx | 少妇无码av无码专区在线观看 | 国产精品久久久久影院嫩草 | 少妇的肉体aa片免费 | 国产女主播喷水视频在线观看 | 精品无码成人片一区二区98 | 国产精品99久久精品爆乳 | 欧美成人高清在线播放 | 99久久精品午夜一区二区 | 蜜臀av在线播放 久久综合激激的五月天 | 日本一卡2卡3卡四卡精品网站 | 性生交大片免费看女人按摩摩 | 无套内谢老熟女 | 精品偷自拍另类在线观看 | 国产精品亚洲lv粉色 | 免费网站看v片在线18禁无码 | 中文字幕 人妻熟女 | 亚洲男人av香蕉爽爽爽爽 | 国产人妖乱国产精品人妖 | av无码电影一区二区三区 | 又大又黄又粗又爽的免费视频 | 久久视频在线观看精品 | 伊人色综合久久天天小片 | 成人免费视频视频在线观看 免费 | 熟妇激情内射com | 亚洲の无码国产の无码步美 | 熟女少妇在线视频播放 | 久久午夜无码鲁丝片秋霞 | 国产在热线精品视频 | 久久精品女人的天堂av | 国产两女互慰高潮视频在线观看 | 日本精品高清一区二区 | 又粗又大又硬毛片免费看 | 大屁股大乳丰满人妻 | 国产办公室秘书无码精品99 | 精品亚洲韩国一区二区三区 | 亚洲va中文字幕无码久久不卡 | 久久久成人毛片无码 | 精品人妻人人做人人爽 | 美女毛片一区二区三区四区 | 国产卡一卡二卡三 | 久久这里只有精品视频9 | 亚洲精品一区二区三区四区五区 | 熟妇人妻中文av无码 | 国产一区二区三区四区五区加勒比 | 奇米影视7777久久精品 | 亚洲精品综合五月久久小说 | 亚洲精品成a人在线观看 | 一本久道久久综合婷婷五月 | 亚洲精品成人av在线 | 久久精品人妻少妇一区二区三区 | 青青青手机频在线观看 | 国产精品二区一区二区aⅴ污介绍 | 蜜臀aⅴ国产精品久久久国产老师 | 国产精品久久久久久久9999 | 性生交大片免费看l | 亚洲精品综合五月久久小说 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲日韩av一区二区三区四区 | 水蜜桃色314在线观看 | 亚洲熟妇自偷自拍另类 | 日日摸天天摸爽爽狠狠97 | 国产熟女一区二区三区四区五区 | 亚无码乱人伦一区二区 | 色综合久久久久综合一本到桃花网 | 久久综合激激的五月天 | 亚洲精品国产a久久久久久 | 亚洲一区二区三区香蕉 | 国产综合色产在线精品 | 亚洲色欲色欲天天天www | 欧美熟妇另类久久久久久多毛 | 亚洲日韩av片在线观看 | 女人被男人爽到呻吟的视频 | 鲁鲁鲁爽爽爽在线视频观看 | 7777奇米四色成人眼影 | 国产精品对白交换视频 | 午夜理论片yy44880影院 | 中文无码成人免费视频在线观看 | 亚洲熟妇色xxxxx欧美老妇y | 在线播放无码字幕亚洲 | 欧美黑人乱大交 | 亚洲欧美日韩国产精品一区二区 | 亚洲国产日韩a在线播放 | 亚洲成av人片在线观看无码不卡 | 国内综合精品午夜久久资源 | 亚洲成av人片天堂网无码】 | 一本大道伊人av久久综合 | 国产色xx群视频射精 | 麻豆国产人妻欲求不满 | 少妇性荡欲午夜性开放视频剧场 | 性色av无码免费一区二区三区 | 亚洲自偷自偷在线制服 | 色五月五月丁香亚洲综合网 | 天堂а√在线中文在线 | 红桃av一区二区三区在线无码av | 野狼第一精品社区 | 亚洲日本一区二区三区在线 | 又大又紧又粉嫩18p少妇 | 波多野结衣av在线观看 | 日韩av无码一区二区三区 | 亚洲精品成人福利网站 | 欧美日韩一区二区免费视频 | 国产精品-区区久久久狼 | 无码av最新清无码专区吞精 | 无码人妻av免费一区二区三区 | 久久久久久九九精品久 | 欧美大屁股xxxxhd黑色 | 婷婷六月久久综合丁香 | 在线а√天堂中文官网 | 少妇久久久久久人妻无码 | 免费看男女做好爽好硬视频 | 黑森林福利视频导航 | 在线看片无码永久免费视频 | 伊人久久大香线蕉午夜 | 亚洲国产精华液网站w | 图片区 小说区 区 亚洲五月 | 全黄性性激高免费视频 | 亚洲成av人在线观看网址 | 国产一区二区三区四区五区加勒比 | 色欲综合久久中文字幕网 | 亚洲成a人片在线观看无码3d | 无码任你躁久久久久久久 | 无码乱肉视频免费大全合集 | 成人精品天堂一区二区三区 | 中国大陆精品视频xxxx | 国产综合色产在线精品 | 亚洲一区av无码专区在线观看 | 丰满护士巨好爽好大乳 | 精品久久综合1区2区3区激情 | 欧美黑人巨大xxxxx | 亚洲精品一区二区三区在线观看 | 久久精品丝袜高跟鞋 | av无码电影一区二区三区 | 国产网红无码精品视频 | 成人无码视频在线观看网站 | 久久久久成人片免费观看蜜芽 | 日韩精品a片一区二区三区妖精 | 久久午夜无码鲁丝片午夜精品 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产乱人偷精品人妻a片 | 亚洲综合久久一区二区 | 天天躁日日躁狠狠躁免费麻豆 | 少妇人妻av毛片在线看 | 欧美第一黄网免费网站 | 久久亚洲中文字幕无码 | 国产成人无码av一区二区 | 亚洲日韩一区二区三区 | 麻豆国产人妻欲求不满 | 精品久久8x国产免费观看 | 在线观看国产一区二区三区 | 亚洲a无码综合a国产av中文 | 中文字幕人成乱码熟女app | 久久久久se色偷偷亚洲精品av | 日韩人妻系列无码专区 | 成人无码影片精品久久久 | 伊人久久大香线蕉午夜 | 女人被爽到呻吟gif动态图视看 | 无码人妻出轨黑人中文字幕 | 无码帝国www无码专区色综合 | 久久99精品国产麻豆蜜芽 | 亚洲另类伦春色综合小说 | 色一情一乱一伦一视频免费看 | 亚洲色成人中文字幕网站 | 婷婷色婷婷开心五月四房播播 | 婷婷丁香六月激情综合啪 | 亚洲精品国产精品乱码视色 | 国产在线精品一区二区三区直播 | 欧美 日韩 人妻 高清 中文 | 中文精品久久久久人妻不卡 | 亚洲成色www久久网站 | 十八禁真人啪啪免费网站 | 荡女精品导航 | 欧美zoozzooz性欧美 | 东京一本一道一二三区 | 少妇人妻大乳在线视频 | 国产免费久久精品国产传媒 | 欧美性色19p | 日韩人妻少妇一区二区三区 | 老太婆性杂交欧美肥老太 | 久久久精品成人免费观看 | 亚洲s色大片在线观看 | 内射巨臀欧美在线视频 | 少妇无码一区二区二三区 | 中国女人内谢69xxxxxa片 | 亚洲天堂2017无码中文 | 亚洲国产午夜精品理论片 | 亚洲成av人在线观看网址 | 国产两女互慰高潮视频在线观看 | 国产精品久久久久久久9999 | 中文字幕色婷婷在线视频 | 日日碰狠狠躁久久躁蜜桃 | 大肉大捧一进一出视频出来呀 | 国产综合色产在线精品 | 久久久久成人片免费观看蜜芽 | 国内精品久久毛片一区二区 | 成人欧美一区二区三区 | 中文精品无码中文字幕无码专区 | 欧美 日韩 亚洲 在线 | 亚洲一区二区三区无码久久 | 日欧一片内射va在线影院 | 亚洲成熟女人毛毛耸耸多 | 精品熟女少妇av免费观看 | 欧美阿v高清资源不卡在线播放 | 亚洲区小说区激情区图片区 | 亚洲精品国产第一综合99久久 | 偷窥村妇洗澡毛毛多 | 欧美xxxx黑人又粗又长 | 少妇邻居内射在线 | 麻豆国产人妻欲求不满谁演的 | 2019午夜福利不卡片在线 | 久久99精品国产麻豆 | 少妇被黑人到高潮喷出白浆 | 亚洲欧美色中文字幕在线 | 国产精品无套呻吟在线 | 久久五月精品中文字幕 | 欧美激情内射喷水高潮 | 婷婷丁香五月天综合东京热 | 国产成人综合在线女婷五月99播放 | 欧美三级a做爰在线观看 | 欧美午夜特黄aaaaaa片 | 国产三级精品三级男人的天堂 | 久久久无码中文字幕久... | 无码人妻出轨黑人中文字幕 | 亚洲成av人片在线观看无码不卡 | 日韩av激情在线观看 | 无码人妻少妇伦在线电影 | 国产av人人夜夜澡人人爽麻豆 | 人妻与老人中文字幕 | 亚洲日韩av一区二区三区四区 | 亚洲自偷精品视频自拍 | 2019午夜福利不卡片在线 | 成人性做爰aaa片免费看不忠 | 青草视频在线播放 | 欧美丰满老熟妇xxxxx性 | 超碰97人人做人人爱少妇 | 黑人巨大精品欧美一区二区 | 色综合久久中文娱乐网 | 精品久久久久久亚洲精品 | 97久久超碰中文字幕 | 色 综合 欧美 亚洲 国产 | 精品国产国产综合精品 | 又大又硬又黄的免费视频 | 亚洲 欧美 激情 小说 另类 | 性欧美熟妇videofreesex | 亚洲の无码国产の无码步美 | 日本一卡2卡3卡四卡精品网站 | 久久久久久a亚洲欧洲av冫 | 乱人伦中文视频在线观看 | 亚洲精品国产品国语在线观看 | 国产偷国产偷精品高清尤物 | 亚洲の无码国产の无码步美 | 99久久婷婷国产综合精品青草免费 | 国产成人无码专区 | 无码av中文字幕免费放 | 狂野欧美性猛xxxx乱大交 | 日韩成人一区二区三区在线观看 | 国产精品无码一区二区桃花视频 | 丰满妇女强制高潮18xxxx | 国产无遮挡吃胸膜奶免费看 | 亚洲经典千人经典日产 | 欧美精品免费观看二区 | 国产在线一区二区三区四区五区 | 99久久久国产精品无码免费 | 伊人久久大香线焦av综合影院 | 久久久久99精品国产片 | 三上悠亚人妻中文字幕在线 | 欧美老妇交乱视频在线观看 | 麻豆蜜桃av蜜臀av色欲av | 麻豆国产人妻欲求不满 | 亚洲成av人片在线观看无码不卡 | 亚洲精品国产精品乱码视色 | 国产精品无码一区二区三区不卡 | 精品久久久中文字幕人妻 | 国产亚洲精品久久久久久大师 | 性开放的女人aaa片 | 伊人久久婷婷五月综合97色 | 国产精品18久久久久久麻辣 | 东京无码熟妇人妻av在线网址 | 久9re热视频这里只有精品 | 国产欧美精品一区二区三区 | 亚洲色欲色欲欲www在线 | 久久精品国产99久久6动漫 | 无码av岛国片在线播放 | 久久精品无码一区二区三区 | 国产人妻精品一区二区三区不卡 | 国产人妻精品午夜福利免费 | 好屌草这里只有精品 | 最新国产麻豆aⅴ精品无码 | 久久精品女人天堂av免费观看 | 嫩b人妻精品一区二区三区 | 内射后入在线观看一区 | 国产三级精品三级男人的天堂 | 国产熟妇另类久久久久 | √8天堂资源地址中文在线 | 国产精品无套呻吟在线 | 国内精品久久久久久中文字幕 | 一本久久a久久精品亚洲 | 国内老熟妇对白xxxxhd | 思思久久99热只有频精品66 | 亚洲综合精品香蕉久久网 | 少妇被粗大的猛进出69影院 | 久久久久久久久蜜桃 | 久久精品人人做人人综合试看 | 成人试看120秒体验区 | 无码国内精品人妻少妇 | 亚洲区小说区激情区图片区 | 久久久久人妻一区精品色欧美 | 狠狠噜狠狠狠狠丁香五月 | 女人被男人躁得好爽免费视频 | 久精品国产欧美亚洲色aⅴ大片 | 无码成人精品区在线观看 | 国内揄拍国内精品人妻 | 国产麻豆精品精东影业av网站 | 99久久久无码国产精品免费 | 国产麻豆精品精东影业av网站 | 蜜臀aⅴ国产精品久久久国产老师 | 永久黄网站色视频免费直播 | 水蜜桃av无码 | 奇米影视888欧美在线观看 | 亚洲国产一区二区三区在线观看 | 中文字幕亚洲情99在线 | 精品偷拍一区二区三区在线看 | 全黄性性激高免费视频 | 亚洲熟妇色xxxxx亚洲 | 中国女人内谢69xxxxxa片 | 无码人妻久久一区二区三区不卡 | 欧美一区二区三区 | 亚洲中文字幕va福利 | 性生交大片免费看l | 又湿又紧又大又爽a视频国产 | 99国产欧美久久久精品 | aa片在线观看视频在线播放 | 亚洲 激情 小说 另类 欧美 | 野外少妇愉情中文字幕 | 日本又色又爽又黄的a片18禁 | 国产女主播喷水视频在线观看 | 男女超爽视频免费播放 | 又大又硬又黄的免费视频 | 国产69精品久久久久app下载 | 久久亚洲精品成人无码 | 中文字幕+乱码+中文字幕一区 | 精品厕所偷拍各类美女tp嘘嘘 | 欧美乱妇无乱码大黄a片 | 欧美自拍另类欧美综合图片区 | 日本一区二区三区免费播放 | 思思久久99热只有频精品66 | 中文字幕av伊人av无码av | 最近免费中文字幕中文高清百度 | av无码久久久久不卡免费网站 | 青草青草久热国产精品 | 成人无码影片精品久久久 | 图片区 小说区 区 亚洲五月 | 久久亚洲精品成人无码 | 国精产品一区二区三区 | 国产高清av在线播放 | 嫩b人妻精品一区二区三区 | 亚洲国产一区二区三区在线观看 | 夜精品a片一区二区三区无码白浆 | 日本高清一区免费中文视频 | 最新国产乱人伦偷精品免费网站 | 中文字幕 亚洲精品 第1页 | 国产激情一区二区三区 | 久久国产精品二国产精品 | 人人妻人人澡人人爽欧美一区 | 亚洲综合色区中文字幕 | 亚洲一区二区三区播放 | 麻豆av传媒蜜桃天美传媒 | 极品嫩模高潮叫床 | 亚洲综合在线一区二区三区 | 精品久久久无码中文字幕 | 成人免费无码大片a毛片 | 樱花草在线社区www | 久久精品丝袜高跟鞋 | 在教室伦流澡到高潮hnp视频 | 亚洲一区二区三区无码久久 | 国产激情综合五月久久 | 午夜嘿嘿嘿影院 | 亚洲日韩乱码中文无码蜜桃臀网站 | 欧美激情一区二区三区成人 | 成人试看120秒体验区 | 无码国产色欲xxxxx视频 | 夜夜影院未满十八勿进 | 亚洲精品国产第一综合99久久 | 国产一区二区不卡老阿姨 | 欧美乱妇无乱码大黄a片 | 成人试看120秒体验区 | 亚洲精品无码国产 | 两性色午夜免费视频 | 特大黑人娇小亚洲女 | 欧洲精品码一区二区三区免费看 | 我要看www免费看插插视频 | 久久综合网欧美色妞网 | 国产免费久久精品国产传媒 | 成人精品视频一区二区 | 欧美日韩视频无码一区二区三 | 少妇一晚三次一区二区三区 | aⅴ亚洲 日韩 色 图网站 播放 | 色窝窝无码一区二区三区色欲 | 国内精品九九久久久精品 | 亚洲一区二区三区香蕉 | av小次郎收藏 | 亚洲va中文字幕无码久久不卡 | 亚洲熟熟妇xxxx | 特级做a爰片毛片免费69 | 久久国产精品精品国产色婷婷 | 国产凸凹视频一区二区 | 日韩少妇内射免费播放 | 国产乱人无码伦av在线a | 欧美老妇交乱视频在线观看 | av无码电影一区二区三区 | 无码人妻精品一区二区三区不卡 | 欧美三级不卡在线观看 | 中文字幕人妻无码一区二区三区 | 欧美老人巨大xxxx做受 | 久久久www成人免费毛片 | 精品无码一区二区三区爱欲 | 影音先锋中文字幕无码 | 宝宝好涨水快流出来免费视频 | 鲁大师影院在线观看 | 亚洲综合伊人久久大杳蕉 | 丁香花在线影院观看在线播放 | 色综合久久久无码网中文 | 76少妇精品导航 | 久激情内射婷内射蜜桃人妖 | 欧美阿v高清资源不卡在线播放 | 亚洲欧美日韩国产精品一区二区 | 丁香啪啪综合成人亚洲 | 天天综合网天天综合色 | 国产精品免费大片 | 国产欧美精品一区二区三区 | 国产艳妇av在线观看果冻传媒 | 精品人妻人人做人人爽夜夜爽 | 一区二区三区高清视频一 | 色婷婷av一区二区三区之红樱桃 | 免费人成在线视频无码 | 日本精品人妻无码77777 天堂一区人妻无码 | 日本乱人伦片中文三区 | 色 综合 欧美 亚洲 国产 | 日本xxxx色视频在线观看免费 | 亚洲а∨天堂久久精品2021 | 免费观看又污又黄的网站 | 欧美性生交活xxxxxdddd | 亚洲国产一区二区三区在线观看 | 18精品久久久无码午夜福利 | 国内精品久久毛片一区二区 | 一二三四在线观看免费视频 | 人人澡人摸人人添 | 亚洲春色在线视频 | 一本久道久久综合婷婷五月 | 亚洲天堂2017无码中文 | 88国产精品欧美一区二区三区 | 久久人妻内射无码一区三区 | 四虎国产精品一区二区 | 小sao货水好多真紧h无码视频 | 亚洲а∨天堂久久精品2021 | 综合激情五月综合激情五月激情1 | 国产成人无码av在线影院 | 麻豆av传媒蜜桃天美传媒 | 熟妇女人妻丰满少妇中文字幕 | 成人免费无码大片a毛片 | 亚洲一区二区三区国产精华液 | 九月婷婷人人澡人人添人人爽 | 国产亚洲精品久久久久久久 | 国产综合久久久久鬼色 | 国产真人无遮挡作爱免费视频 | 2020最新国产自产精品 | 国内精品人妻无码久久久影院蜜桃 | 国产激情艳情在线看视频 | 久久视频在线观看精品 | 97久久精品无码一区二区 | 日本一区二区更新不卡 | 国产精品亚洲lv粉色 | 18禁黄网站男男禁片免费观看 | 国产一区二区不卡老阿姨 | 台湾无码一区二区 | 欧美老人巨大xxxx做受 | 国产精品资源一区二区 | 精品国产福利一区二区 | 丁香花在线影院观看在线播放 | 日韩av激情在线观看 | 国产综合久久久久鬼色 | 国产无套粉嫩白浆在线 | 亚洲自偷自偷在线制服 | 久久国产精品偷任你爽任你 | 67194成是人免费无码 | 久久久久久av无码免费看大片 | 粉嫩少妇内射浓精videos | 免费人成在线观看网站 | 亚洲精品无码国产 | 中文字幕乱妇无码av在线 | 98国产精品综合一区二区三区 | 国产亚洲美女精品久久久2020 | 精品国产一区二区三区av 性色 | 国产真实伦对白全集 | 成人无码视频免费播放 | 大色综合色综合网站 | 鲁一鲁av2019在线 | 少妇高潮一区二区三区99 | 精品偷拍一区二区三区在线看 | 欧美性黑人极品hd | 色综合久久久无码中文字幕 | 天天摸天天透天天添 | 内射欧美老妇wbb | 国产特级毛片aaaaaa高潮流水 | 久久久久亚洲精品中文字幕 | 美女扒开屁股让男人桶 | 久久99精品国产麻豆 | 大肉大捧一进一出好爽视频 | 波多野结衣乳巨码无在线观看 | 极品尤物被啪到呻吟喷水 | 久久久久久亚洲精品a片成人 | 国产成人无码av片在线观看不卡 | 国内少妇偷人精品视频 | 四虎4hu永久免费 | 日韩欧美中文字幕公布 | 超碰97人人射妻 | 欧洲极品少妇 | 久久精品人妻少妇一区二区三区 | 国产精品99爱免费视频 | 最近中文2019字幕第二页 | 无码人妻久久一区二区三区不卡 | 亚洲码国产精品高潮在线 | 久久人妻内射无码一区三区 | aⅴ亚洲 日韩 色 图网站 播放 | 国产亚洲人成在线播放 | 欧美性生交xxxxx久久久 | 国产精品爱久久久久久久 | 精品一区二区不卡无码av | 中文字幕日韩精品一区二区三区 | 久久精品无码一区二区三区 | 欧美变态另类xxxx | 99久久亚洲精品无码毛片 | 人人爽人人澡人人高潮 | 精品无码国产自产拍在线观看蜜 | 嫩b人妻精品一区二区三区 | 亚洲综合精品香蕉久久网 | 国产乱子伦视频在线播放 | 中文亚洲成a人片在线观看 | 久精品国产欧美亚洲色aⅴ大片 | 午夜成人1000部免费视频 | 伊人久久大香线蕉av一区二区 | 麻豆果冻传媒2021精品传媒一区下载 | 成人片黄网站色大片免费观看 | 中文字幕无码免费久久99 | 国产精品理论片在线观看 | 国产va免费精品观看 | 99久久久国产精品无码免费 | 人人澡人人透人人爽 | 中文字幕无码日韩专区 | 亚洲一区av无码专区在线观看 | 领导边摸边吃奶边做爽在线观看 | 久久人人爽人人爽人人片ⅴ | 国产亚洲精品久久久久久大师 | 天堂无码人妻精品一区二区三区 | 人人爽人人爽人人片av亚洲 | 日韩人妻无码一区二区三区久久99 | 精品欧美一区二区三区久久久 | 国产成人无码av片在线观看不卡 | 国产乱码精品一品二品 | 精品aⅴ一区二区三区 | 国产九九九九九九九a片 | 4hu四虎永久在线观看 | 未满成年国产在线观看 | 欧美日韩亚洲国产精品 | 在线成人www免费观看视频 | 熟女少妇人妻中文字幕 | 免费看男女做好爽好硬视频 | 久久国产精品偷任你爽任你 | 午夜精品一区二区三区在线观看 | 亚洲欧美色中文字幕在线 | 国产成人无码av在线影院 | 国产内射老熟女aaaa | 在线观看国产一区二区三区 | 5858s亚洲色大成网站www | 国产精品资源一区二区 | 免费男性肉肉影院 | 亚洲a无码综合a国产av中文 | 在线观看免费人成视频 | 偷窥村妇洗澡毛毛多 | 欧美成人高清在线播放 | 青青草原综合久久大伊人精品 | 久久五月精品中文字幕 | 98国产精品综合一区二区三区 | 日本熟妇乱子伦xxxx | 国内精品一区二区三区不卡 | 在线播放无码字幕亚洲 | 兔费看少妇性l交大片免费 | 伊人久久婷婷五月综合97色 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久热国产vs视频在线观看 | 日本丰满熟妇videos | 亚洲人成影院在线观看 | 日本丰满护士爆乳xxxx | √天堂中文官网8在线 | 欧美性生交活xxxxxdddd | 欧美一区二区三区视频在线观看 | 亚洲色偷偷偷综合网 | 久久久久亚洲精品男人的天堂 | 高潮毛片无遮挡高清免费视频 | 国产免费无码一区二区视频 | 亚洲欧美中文字幕5发布 | 国产在线aaa片一区二区99 | 国产一区二区三区精品视频 | 大屁股大乳丰满人妻 | 伊人久久大香线蕉午夜 | 图片小说视频一区二区 | 中国女人内谢69xxxx | 国产午夜福利亚洲第一 | 成人片黄网站色大片免费观看 | 撕开奶罩揉吮奶头视频 | 亚洲精品成人av在线 | 日本护士xxxxhd少妇 | 一本久久伊人热热精品中文字幕 | 一本加勒比波多野结衣 | 四虎影视成人永久免费观看视频 | 男人和女人高潮免费网站 | 高清无码午夜福利视频 | 又湿又紧又大又爽a视频国产 | 国产精品无套呻吟在线 | 3d动漫精品啪啪一区二区中 | 沈阳熟女露脸对白视频 | а√资源新版在线天堂 | 日本护士xxxxhd少妇 | 国产99久久精品一区二区 | 亚洲精品鲁一鲁一区二区三区 | 风流少妇按摩来高潮 | 波多野结衣高清一区二区三区 | 国产av无码专区亚洲awww | 18精品久久久无码午夜福利 | 欧美肥老太牲交大战 | 日本一本二本三区免费 | 久久久久免费精品国产 | 丰满人妻一区二区三区免费视频 | 在线看片无码永久免费视频 | 日本精品人妻无码77777 天堂一区人妻无码 | 最新国产乱人伦偷精品免费网站 | 亚洲一区二区三区无码久久 | 日韩精品a片一区二区三区妖精 | 国产av无码专区亚洲a∨毛片 | 国产情侣作爱视频免费观看 | 久久久久成人精品免费播放动漫 | 男女下面进入的视频免费午夜 | 一本久久伊人热热精品中文字幕 | a在线观看免费网站大全 | 波多野结衣av一区二区全免费观看 | 中国女人内谢69xxxx | 精品国产福利一区二区 | 国产亚av手机在线观看 | 欧美人与禽猛交狂配 | 国产人妻人伦精品1国产丝袜 | 人妻无码久久精品人妻 | 国产精品无码mv在线观看 | 亚洲日韩中文字幕在线播放 | 蜜桃视频韩日免费播放 | 国色天香社区在线视频 | 人人妻人人澡人人爽欧美一区 | 久久久久成人精品免费播放动漫 | 欧美三级a做爰在线观看 | 久久99国产综合精品 | 亚洲aⅴ无码成人网站国产app | 久久zyz资源站无码中文动漫 | 国产乱人伦av在线无码 | 未满成年国产在线观看 | 在线欧美精品一区二区三区 | 亚洲熟妇色xxxxx欧美老妇 | 波多野结衣一区二区三区av免费 | 宝宝好涨水快流出来免费视频 | 亚洲乱亚洲乱妇50p | 久久综合久久自在自线精品自 | 亚洲成熟女人毛毛耸耸多 | 少妇人妻偷人精品无码视频 | 大胆欧美熟妇xx | 中国女人内谢69xxxx | 日欧一片内射va在线影院 | 免费乱码人妻系列无码专区 | 精品国产精品久久一区免费式 | 国产乱人伦av在线无码 | 99精品无人区乱码1区2区3区 | 国产亚洲精品久久久闺蜜 | 国产成人一区二区三区在线观看 | 国产精品a成v人在线播放 | 日韩精品无码免费一区二区三区 | 狠狠cao日日穞夜夜穞av | 美女张开腿让人桶 | 欧美精品免费观看二区 | 国精产品一品二品国精品69xx | 亚洲精品久久久久久久久久久 | 久久精品女人天堂av免费观看 | 无码av最新清无码专区吞精 | 成在人线av无码免观看麻豆 | 综合激情五月综合激情五月激情1 | 高潮喷水的毛片 | 性欧美大战久久久久久久 | 中文字幕久久久久人妻 | 狠狠色丁香久久婷婷综合五月 | v一区无码内射国产 | 亚欧洲精品在线视频免费观看 | 老头边吃奶边弄进去呻吟 | 任你躁国产自任一区二区三区 | 人人爽人人澡人人高潮 | 成人aaa片一区国产精品 | 亚洲精品国产第一综合99久久 | 男女性色大片免费网站 | 国产人成高清在线视频99最全资源 | 女人和拘做爰正片视频 | 欧美乱妇无乱码大黄a片 | 欧美日韩一区二区综合 | 装睡被陌生人摸出水好爽 | 在线 国产 欧美 亚洲 天堂 | 精品欧美一区二区三区久久久 | 人妻少妇精品无码专区动漫 | 少妇厨房愉情理9仑片视频 | 成人片黄网站色大片免费观看 | 丰满少妇人妻久久久久久 | 国产激情无码一区二区 | 亚洲中文字幕在线无码一区二区 | 丝袜 中出 制服 人妻 美腿 | 水蜜桃亚洲一二三四在线 | 中文字幕人妻丝袜二区 | 麻豆蜜桃av蜜臀av色欲av | 波多野结衣乳巨码无在线观看 | 巨爆乳无码视频在线观看 | 亚洲国产精品久久久天堂 | 欧美猛少妇色xxxxx | 97无码免费人妻超级碰碰夜夜 | 男女猛烈xx00免费视频试看 | 欧洲熟妇色 欧美 | 2020最新国产自产精品 | 日日天干夜夜狠狠爱 | 国产精品永久免费视频 | 亚洲人亚洲人成电影网站色 | 天堂а√在线地址中文在线 | 国产亚洲精品久久久久久国模美 | 国产无遮挡又黄又爽免费视频 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲男人av天堂午夜在 | 亚洲日韩中文字幕在线播放 | 精品一区二区不卡无码av | 精品国产精品久久一区免费式 | 蜜桃无码一区二区三区 | 午夜精品一区二区三区的区别 | 久久久中文久久久无码 | 午夜福利电影 | 亚洲欧洲中文日韩av乱码 | 国产精品理论片在线观看 | 国产精品-区区久久久狼 | 久久久久成人片免费观看蜜芽 | 性啪啪chinese东北女人 | 国产色xx群视频射精 | 亚洲一区二区三区在线观看网站 | 国产精品丝袜黑色高跟鞋 | 色婷婷久久一区二区三区麻豆 | 中文字幕中文有码在线 | 国产内射老熟女aaaa | 亚洲国产精品久久久天堂 | 久久国产精品_国产精品 | 成人性做爰aaa片免费看 | 久久久久久久人妻无码中文字幕爆 | 狠狠色丁香久久婷婷综合五月 | 国内精品久久毛片一区二区 | 啦啦啦www在线观看免费视频 | 国产精品无码一区二区三区不卡 | 性欧美牲交xxxxx视频 | 国产成人无码午夜视频在线观看 | 性欧美熟妇videofreesex | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 夜夜高潮次次欢爽av女 | 日韩人妻少妇一区二区三区 | 红桃av一区二区三区在线无码av | 99久久精品国产一区二区蜜芽 | 亚洲s码欧洲m码国产av | 97资源共享在线视频 | 四十如虎的丰满熟妇啪啪 | 欧美第一黄网免费网站 | 久久精品一区二区三区四区 | 亚洲精品久久久久中文第一幕 | 午夜福利一区二区三区在线观看 | 67194成是人免费无码 | 欧美日本免费一区二区三区 | 99视频精品全部免费免费观看 | 亚洲人成人无码网www国产 | 一个人看的www免费视频在线观看 | 中文字幕无码免费久久9一区9 | 在线观看欧美一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲色成人中文字幕网站 | 久久久国产精品无码免费专区 | 国产精品久久国产精品99 | 天天摸天天透天天添 | 国产激情精品一区二区三区 | 99国产欧美久久久精品 | 国产无套粉嫩白浆在线 | 福利一区二区三区视频在线观看 | 免费人成在线视频无码 | 一本久道久久综合狠狠爱 | 内射老妇bbwx0c0ck | 久久久久久av无码免费看大片 | 精品无码一区二区三区爱欲 | 国内精品久久毛片一区二区 | 人人妻人人澡人人爽欧美一区 | 18精品久久久无码午夜福利 | 无遮挡国产高潮视频免费观看 | 99久久精品日本一区二区免费 | 国产亚洲日韩欧美另类第八页 | 中文字幕av日韩精品一区二区 | 国语精品一区二区三区 | 日韩少妇白浆无码系列 | 国产精品人人妻人人爽 | 国产肉丝袜在线观看 | 日韩少妇内射免费播放 | 亚洲日韩中文字幕在线播放 | 国内丰满熟女出轨videos | 无码毛片视频一区二区本码 | 亚洲欧美精品aaaaaa片 | 性欧美熟妇videofreesex | 欧美真人作爱免费视频 | 国内少妇偷人精品视频 | 国产亚洲人成在线播放 | 无码人妻久久一区二区三区不卡 | 又黄又爽又色的视频 | 日韩欧美成人免费观看 | 岛国片人妻三上悠亚 | 午夜成人1000部免费视频 | 亚洲乱码国产乱码精品精 | 九九在线中文字幕无码 | 亚洲va欧美va天堂v国产综合 | 免费乱码人妻系列无码专区 | 无码吃奶揉捏奶头高潮视频 | 精品一二三区久久aaa片 | 暴力强奷在线播放无码 | yw尤物av无码国产在线观看 | 黑人巨大精品欧美一区二区 | 99精品无人区乱码1区2区3区 | 综合网日日天干夜夜久久 | 国产九九九九九九九a片 | 成人精品天堂一区二区三区 | 在线观看国产午夜福利片 | 在线а√天堂中文官网 | 久久久久免费精品国产 | 中文字幕无码免费久久99 | 亚洲精品综合一区二区三区在线 | 亚洲一区二区三区四区 | 亚洲精品欧美二区三区中文字幕 | 中国大陆精品视频xxxx | 牲欲强的熟妇农村老妇女视频 | 牲欲强的熟妇农村老妇女视频 | 色欲综合久久中文字幕网 | 98国产精品综合一区二区三区 | 国产情侣作爱视频免费观看 | 天堂在线观看www | 国产亲子乱弄免费视频 | 亚洲国产精品无码久久久久高潮 | 国语自产偷拍精品视频偷 | 99精品无人区乱码1区2区3区 | 久久精品人人做人人综合试看 | 水蜜桃亚洲一二三四在线 | 亚洲精品久久久久久一区二区 | 午夜精品久久久久久久 | 性欧美疯狂xxxxbbbb | 中文字幕无码免费久久9一区9 | 国内精品九九久久久精品 | 婷婷五月综合激情中文字幕 | 久久精品99久久香蕉国产色戒 | 成人免费视频一区二区 | 99riav国产精品视频 | 天堂а√在线地址中文在线 | 亚洲日韩av一区二区三区中文 | 国产亚av手机在线观看 | 婷婷五月综合激情中文字幕 | 精品国产av色一区二区深夜久久 | 国产亚洲人成a在线v网站 | 精品偷拍一区二区三区在线看 | 亚洲国产欧美日韩精品一区二区三区 | 日韩精品无码一本二本三本色 | 国产精品久久久久久久影院 | 久久熟妇人妻午夜寂寞影院 | 日本精品少妇一区二区三区 | 日韩欧美群交p片內射中文 | 老熟妇乱子伦牲交视频 | 永久免费观看美女裸体的网站 | 女人被男人躁得好爽免费视频 | 成人一在线视频日韩国产 | 天天躁夜夜躁狠狠是什么心态 | 国产精品无码久久av | 精品偷自拍另类在线观看 | 无码精品人妻一区二区三区av | 成人毛片一区二区 | 极品尤物被啪到呻吟喷水 | 久久精品国产大片免费观看 | 国产乡下妇女做爰 | 丰满妇女强制高潮18xxxx | 麻豆国产人妻欲求不满 | 久久久久99精品成人片 | 99在线 | 亚洲 | 伊人久久大香线蕉午夜 | 亚洲 欧美 激情 小说 另类 | 一本色道久久综合狠狠躁 | 亚洲精品国产第一综合99久久 | 天天躁日日躁狠狠躁免费麻豆 | 欧美亚洲国产一区二区三区 | 欧美成人午夜精品久久久 | 少妇高潮一区二区三区99 | 精品亚洲成av人在线观看 | 鲁大师影院在线观看 | 中文字幕亚洲情99在线 | 亚洲中文字幕无码中文字在线 | 4hu四虎永久在线观看 | 2019午夜福利不卡片在线 | 国产av剧情md精品麻豆 | 国产精品美女久久久 | 99久久精品国产一区二区蜜芽 | 粉嫩少妇内射浓精videos | 日韩人妻无码一区二区三区久久99 | 丰满人妻翻云覆雨呻吟视频 | 欧美老妇与禽交 | 特大黑人娇小亚洲女 | 国产无av码在线观看 | 日日摸夜夜摸狠狠摸婷婷 | 无人区乱码一区二区三区 | 久久精品国产一区二区三区 | 久久久精品456亚洲影院 | 欧美 日韩 亚洲 在线 | 人人爽人人澡人人高潮 | 97精品国产97久久久久久免费 | 青草青草久热国产精品 | 国色天香社区在线视频 | 亚洲人成网站色7799 | 欧美国产日韩久久mv | 97精品人妻一区二区三区香蕉 | 国内精品九九久久久精品 | 装睡被陌生人摸出水好爽 | 国产一区二区三区日韩精品 | 久久 国产 尿 小便 嘘嘘 | 久久精品一区二区三区四区 | 又紧又大又爽精品一区二区 | 亚洲欧洲中文日韩av乱码 | 性欧美疯狂xxxxbbbb | 青青草原综合久久大伊人精品 | 亚洲中文字幕在线观看 | 国产成人无码av在线影院 | 中国大陆精品视频xxxx | 精品无码成人片一区二区98 | 中文字幕无码热在线视频 | 在线视频网站www色 | 色婷婷欧美在线播放内射 | 国产成人午夜福利在线播放 | 熟女俱乐部五十路六十路av | 巨爆乳无码视频在线观看 | 久久久久久久久蜜桃 | 欧美日韩久久久精品a片 | 日日摸夜夜摸狠狠摸婷婷 | 人妻aⅴ无码一区二区三区 | 亚洲七七久久桃花影院 | 熟女少妇在线视频播放 | 精品人妻人人做人人爽夜夜爽 | 中文字幕 亚洲精品 第1页 | 欧美亚洲日韩国产人成在线播放 | 国产精品.xx视频.xxtv | 国产精品嫩草久久久久 | 性生交片免费无码看人 | 国产人妻大战黑人第1集 | 亚洲综合在线一区二区三区 | 小泽玛莉亚一区二区视频在线 | 中国大陆精品视频xxxx | 无码吃奶揉捏奶头高潮视频 | 国产成人精品视频ⅴa片软件竹菊 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 成人欧美一区二区三区 | 日韩欧美群交p片內射中文 | 欧美亚洲日韩国产人成在线播放 | 国产精品办公室沙发 | 欧美亚洲日韩国产人成在线播放 | 国产成人午夜福利在线播放 | 九月婷婷人人澡人人添人人爽 | 欧美丰满老熟妇xxxxx性 | 无码av最新清无码专区吞精 | 粉嫩少妇内射浓精videos | 午夜无码人妻av大片色欲 | 国产精品-区区久久久狼 | 久久99精品国产麻豆 | 亚洲日本va中文字幕 | 日本一本二本三区免费 | 在线欧美精品一区二区三区 | 久久精品一区二区三区四区 | 亚洲色大成网站www | 55夜色66夜色国产精品视频 | 久久视频在线观看精品 | 性做久久久久久久久 | 欧美黑人乱大交 | 免费国产成人高清在线观看网站 | 日韩亚洲欧美精品综合 | 无码人妻黑人中文字幕 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久精品国产一区二区三区肥胖 | 亚洲va欧美va天堂v国产综合 | 国产在线精品一区二区三区直播 | 国产亚洲精品久久久久久久久动漫 | 伊在人天堂亚洲香蕉精品区 | 国产精品亚洲专区无码不卡 | 国产精品嫩草久久久久 | 性欧美大战久久久久久久 | 少妇性荡欲午夜性开放视频剧场 | 青青青手机频在线观看 | 国产精品爱久久久久久久 | 色 综合 欧美 亚洲 国产 | 国产福利视频一区二区 | 国精产品一区二区三区 | 一本久久伊人热热精品中文字幕 | 强辱丰满人妻hd中文字幕 | 成年美女黄网站色大免费全看 | 欧美丰满熟妇xxxx性ppx人交 | 18精品久久久无码午夜福利 | 久久亚洲精品中文字幕无男同 | 国产偷国产偷精品高清尤物 | 欧美激情内射喷水高潮 |