精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

來自VC++小組的VS2010 Beta 1常見問題報告

原創
開發 后端
Visual Studio 2010 Beta 1中的VC++對C++0x提供了很多支持,很多標準也與C++0x接軌。這樣做的好處是很多的,但同時也會導致以前一些不符合C++0x規范的代碼無法像原來那樣工作。以下是VC++小組的相關問題報告。

【51CTO獨家報道】Visual Studio 2010 Beta 1已經發布了一周有余。這期間,Visual C++小組一直在測試VC++在VS 2010 Beta 1下運行的情況(或者叫做VC10 Beta 1)。以下是VC++小組的類庫開發者Stephan T. Lavavej帶來的幾個可能導致原有代碼崩潰的問題報告。

Visual Studio 2010 Beta 1 is now available for download.  I've recently blogged about how Visual C++ in VS 2010 Beta 1, which I refer to as VC10 Beta 1, contains compiler support for five C++0x core language features: lambdas, auto, static_assert, rvalue references, and decltype.  It also contains a substantially rewritten implementation of the C++ Standard Library, supporting many C++0x standard library features.  In the near future, I'll blog about them in Part 4 and beyond of "C++0x Features in VC10", but today I'm going to talk about the STL changes that have the potential to break existing code, which you'll probably want to know about before playing with the C++0x goodies.

(VS2010 Beta 1現在可以下載了。我最近寫了些博文,關于Visual C++在VS 2010 Beta 1版中對5個C++0x核心語言:lambda,auto,static_assert,rvalue references以及decltype的支持情況。我之后會用VC10 Beta 1這個詞來說明。……今天我將討論一下一些有可能會導致現有代碼崩潰的幾個STL變動。在你使用C++0x開發之前可能會想要了解一下。)

問題1:error C3861: 'back_inserter': identifier not found

在VC9 SP1下這是沒問題的:

C:\Temp﹥type back_inserter.cpp
#include ﹤algorithm﹥
#include ﹤iostream﹥
#include ﹤ostream﹥
#include ﹤vector﹥
using namespace std;
 
int square(const int n) {
    return n * n;
}
 
int main() {
    vector﹤int﹥ v;
    v.push_back(11);
    v.push_back(22);
    v.push_back(33);
 
    vector﹤int﹥ dest;
 
    transform(v.begin(), v.end(), back_inserter(dest), square);
 
    for (vector﹤int﹥::const_iterator i = dest.begin(); i != dest.end(); ++i) {
        cout ﹤﹤ *i ﹤﹤ endl;
    }
}
 
C:\Temp﹥cl /EHsc /nologo /W4 back_inserter.cpp
back_inserter.cpp
 
C:\Temp﹥back_inserter
121
484
1089

VC10 Beta 1下就有問題了:

C:\Temp﹥cl /EHsc /nologo /W4 back_inserter.cpp
back_inserter.cpp
back_inserter.cpp(19) : error C3861: 'back_inserter': identifier not found

出了什么問題?

解決方法:#include ﹤iterator﹥

The problem was that back_inserter() was used without including ﹤iterator﹥.  The C++ Standard Library headers include one another in unspecified ways.  "Unspecified" means that the Standard allows but doesn't require any header X to include any header Y.  Furthermore, implementations (like Visual C++) aren't required to document what they do, and are allowed to change what they do from version to version (or according to the phase of the moon, or anything else).  That's what happened here.  In VC9 SP1, including ﹤algorithm﹥ dragged in ﹤iterator﹥.  In VC10 Beta 1, ﹤algorithm﹥ doesn't drag in ﹤iterator﹥.

(問題在于,back_inserter()在沒有include ﹤iterator﹥的情況下被實用。C++標準庫的headers會通過某種未定義的方式將其他headers包括進來。……VC9 SP1下,include﹤algorithm﹥順帶的就包括了﹤iterator﹥,但在VC10 Beta 1下需要單獨寫明。)

When you use a C++ Standard Library component, you should be careful to include its header (i.e. the header that the Standard says it's supposed to live in).  This makes your code portable and immune to implementation changes like this one.

There are probably more places where headers have stopped dragging in other headers, but ﹤iterator﹥ is overwhelmingly the most popular header that people have forgotten to include.

注意:Range Insertion和Range Construction

By the way, when seq is a vector, deque, or list, instead of writing this:

(當seq是一個vector,deque或list的時候,不要這樣寫:)

copy(first, last, back_inserter(seq)); // 這是不好的!

而應該這樣寫:

seq.insert(seq.end(), first, last); // Range Insertion - 好的寫法

如果只是在創建seq,只要這樣寫就可以了:

vector﹤T﹥ seq(first, last); // Range Construction - 好的寫法

They're not only slightly less typing, they're also significantly more efficient.  copy()-to-back_inserter() calls push_back() repeatedly, which can trigger multiple vector reallocations.  Given forward or better iterators, range insertion and range construction can just count how many elements you've got, and allocate enough space for all of them all at once.  This is also more efficient for deque, and you may as well do it for list too.
 

#p#
 
問題2: error C2664: 'std::vector﹤_Ty﹥::_Inside' : cannot convert parameter 1 from 'IUnknown **' to 'const ATL::CComPtr﹤T﹥ *'

在VC9 SP1下這是沒問題的:

C:\Temp﹥type vector_ccomptr.cpp
#include ﹤atlcomcli.h﹥
#include ﹤stddef.h﹥
#include ﹤iostream﹥
#include ﹤ostream﹥
#include ﹤vector﹥
using namespace std;
 
int main() {
    vector﹤CComPtr﹤IUnknown﹥﹥ v;
 
    v.push_back(NULL);
}
 
C:\Temp﹥cl /EHsc /nologo /W4 vector_ccomptr.cpp
vector_ccomptr.cpp
 
C:\Temp﹥vector_ccomptr
 
C:\Temp﹥

VC10 Beta 1下就有問題了:
 

C:\Temp﹥cl /EHsc /nologo /W4 vector_ccomptr.cpp
vector_ccomptr.cpp
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\vector(623) : error C2664: 'std::vector﹤_Ty﹥::_Inside' : cannot convert parameter 1 from 'IUnknown **' to 'const ATL::CComPtr﹤T﹥ *'
        with
        [
            _Ty=ATL::CComPtr﹤IUnknown﹥
        ]
        and
        [
            T=IUnknown
        ]
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
        C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\vector(622) : while compiling class template member function 'void std::vector﹤_Ty﹥::push_back(_Ty &&)'
        with
        [
            _Ty=ATL::CComPtr﹤IUnknown﹥
        ]
        vector_ccomptr.cpp(9) : see reference to class template instantiation 'std::vector﹤_Ty﹥' being compiled
        with
        [
            _Ty=ATL::CComPtr﹤IUnknown﹥
        ]
C:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\vector(625) : error C2040: '-' : 'IUnknown **' differs in levels of indirection from 'ATL::CComPtr﹤T﹥ *'
        with
        [
            T=IUnknown
        ]

出了什么問題?

解決方法:使用CAdapt

The Standard containers prohibit their elements from overloading the address-of operator.  CComPtr overloads the address-of operator.  Therefore, vector﹤CComPtr﹤T﹥﹥ is forbidden (it triggers undefined behavior).  It happened to work in VC9 SP1, but it doesn't in VC10 Beta 1.  That's because vector now uses the address-of operator in push_back(), among other places.

The solution is to use ﹤atlcomcli.h﹥'s CAdapt, whose only purpose in life is to wrap address-of-overloading types for consumption by Standard containers.  vector﹤CAdapt﹤CComPtr﹤T﹥﹥﹥ will compile just fine.  In VC10 Beta 1, I added operator-﹥() to CAdapt, allowing v[i]-﹥Something() to compile unchanged.  However, typically you'll have to make a few other changes when adding CAdapt to your program.  operator.() can't be overloaded, so if you're calling CComPtr's member functions like Release(), you'll need to go through CAdapt's public data member m_T .  For example, v[i].Release() needs to be transformed into v[i].m_T.Release() .  Also, if you're relying on implicit conversions, CAdapt adds an extra layer, which will interfere with them.  Therefore, you may need to explicitly convert things when pushing them back into the vector.

(標準容器禁止其元素將運算符的address-of過載。CComPtr將運算符的address-of過載,導致 vector﹤CComPtr﹤T﹥﹥被禁止。這是因為,在VC9 SP1中,vector并在push_back()中使用不使用運算符的address-of,但在VC10 Beta 1中是使用的。

解決方法就是使用﹤atlcomcli.h﹥的CAdapt。……)
 
 #p#

問題3: error C2662: 'NamedNumber::change_name' : cannot convert 'this' pointer from 'const NamedNumber' to 'NamedNumber &'

在VC9 SP1下這是沒問題的:
 

C:\Temp﹥type std_set.cpp
#include ﹤iostream﹥
#include ﹤ostream﹥
#include ﹤set﹥
#include ﹤string﹥
using namespace std;
 
class NamedNumber {
public:
    NamedNumber(const string& s, const int n)
        : m_name(s), m_num(n) { }
 
    bool operator﹤(const NamedNumber& other) const {
        return m_num ﹤ other.m_num;
    }
 
    string name() const {
        return m_name;
    }
 
    int num() const {
        return m_num;
    }
 
    void change_name(const string& s) {
        m_name = s;
    }
 
private:
    string m_name;
    int m_num;
};
 
void print(const set﹤NamedNumber﹥& s) {
    for (set﹤NamedNumber﹥::const_iterator i = s.begin(); i != s.end(); ++i) {
        cout ﹤﹤ i-﹥name() ﹤﹤ ", " ﹤﹤ i-﹥num() ﹤﹤ endl;
    }
}
 
int main() {
    set﹤NamedNumber﹥ s;
 
    s.insert(NamedNumber("Hardy", 1729));
    s.insert(NamedNumber("Fermat", 65537));
    s.insert(NamedNumber("Sophie Germain", 89));
 
    print(s);
 
    cout ﹤﹤ "--" ﹤﹤ endl;
 
    set﹤NamedNumber﹥::iterator i = s.find(NamedNumber("Whatever", 1729));
 
    if (i == s.end()) {
        cout ﹤﹤ "OH NO" ﹤﹤ endl;
    } else {
        i-﹥change_name("Ramanujan");
    }
 
    print(s);
}
 
C:\Temp﹥cl /EHsc /nologo /W4 std_set.cpp
std_set.cpp
 
C:\Temp﹥std_set
Sophie Germain, 89
Hardy, 1729
Fermat, 65537
--
Sophie Germain, 89
Ramanujan, 1729
Fermat, 65537

VC10 Beta 1下就有問題了:

C:\Temp﹥cl /EHsc /nologo /W4 std_set.cpp
std_set.cpp
std_set.cpp(55) : error C2662: 'NamedNumber::change_name' : cannot convert 'this' pointer from 'const NamedNumber' to 'NamedNumber &'
        Conversion loses qualifiers

出了什么問題?

解決方法:Respect set Immutability (尊重set的不變性) 

The problem is modifying set/multiset elements.

(問題出在set/multiset元素的修改上。)

In C++98/03, you could get away with modifying set/multiset elements as long as you didn't change their ordering.  (Actually changing their ordering is definitely crashtrocity, breaking the data structure's invariants.)

C++0x rightly decided that this was really dangerous and wrong.  Instead, it flat-out says that "Keys in an associative container are immutable" (N2857 23.2.4/5) and "For [set and multiset], both iterator and const_iterator are constant iterators" (/6).

(C++0x決定,修改set/multiset元素是危險的和不正確的。……)

VC10 Beta 1 enforces the C++0x rules.

(VC10 Beta 1遵循C++0x的規則。) 

There are many alternatives to modifying set/multiset elements.

(以下是修改set/multiset元素的一些代替的方法。)

◆You can use map/multimap, separating the immutable key and modifiable value parts.

◆You can copy, modify, erase(), and re-insert() elements.  (Keep exception safety and iterator invalidation in mind.)

◆ You can use set/multiset﹤shared_ptr﹤T﹥, comparator﹥, being careful to preserve the ordering and proving once again that anything can be solved with an extra layer of indirection.

◆You can use mutable members (weird) or const_cast (evil), being careful to preserve the ordering.  I strongly recommend against this.

I should probably mention, before someone else discovers it, that in VC10 Beta 1 we've got a macro called _HAS_IMMUTABLE_SETS .  Defining it to 0 project-wide will prevent this C++0x rule from being enforced.  However, I should also mention that _HAS_IMMUTABLE_SETS is going to be removed after Beta 1.  You can use it as a temporary workaround, but not as a permanent one.
 
#p# 

問題4:Specializing stdext::hash_compare

If you've used the non-Standard ﹤hash_set﹥ or ﹤hash_map﹥ and specialized stdext::hash_compare for your own types, this won't work anymore, because we've moved it to namespace std.  ﹤hash_set﹥ and ﹤hash_map﹥ are still non-Standard, but putting them in namespace stdext wasn't accomplishing very much.

(如果你為你的type使用非標準話的 ﹤hash_set﹥或﹤hash_map﹥,以及特別的stdext::hash_compare,那你會發現這里沒法兒用了,因為它們被移到了命名空間下。 ……)
 
解決方法:使用 ﹤unordered_set﹥ 或﹤unordered_map﹥

TR1/C++0x ﹤unordered_set﹥ and ﹤unordered_map﹥ are powered by the same machinery as ﹤hash_set﹥ and ﹤hash_map﹥, but the unordered containers have a superior modern interface.  In particular, providing hash and equality functors is easier.

If you still want to use ﹤hash_set﹥ and ﹤hash_map﹥, you can specialize std::hash_compare, which is where it now lives.  Or you can provide your own traits class.

By the way, for those specializing TR1/C++0x components, you should be aware that they still live in std::tr1 and are dragged into std with using-declarations.  Eventually (after VC10) this will change.

This isn't an exhaustive list, but these are the most common issues that we've encountered.  Now that you know about them, your upgrading experience should be more pleasant.

(列表并不全面,但是這是我們所最常遇到的問題。現在你也知道了,希望你的更新過程更加愉快。)

Stephan T. Lavavej

Visual C++ Libraries Developer

內容來源:Visual C++ 小組博客

【編輯推薦】

  1. Visual Studio 2010的歷史調試功能
  2. 探秘Visual Studio 2010中的災難恢復功能
  3. 在Visual Studio 2010中自定義開始頁
  4. 微軟發布Visual Studio 2010 Beta 1
  5. Visual Studio 2010重要新功能一覽
  6. Visual C# 2010新特性之dynamic類型
  7. 推薦Visual Studio 2010中F#的一些資源
責任編輯:yangsai 來源: 51CTO.com
相關推薦

2009-06-10 22:41:47

Visual StudVS2010ASP.NET MVC

2009-07-28 10:00:47

VS2010 beta

2009-05-21 14:42:09

.NET 4.0VS2010Visual Stud

2009-12-02 14:44:09

VS2010 Beta

2009-12-02 14:19:09

VS 2010產品

2009-12-11 15:13:15

VS 2010驅動

2009-11-11 11:29:37

VS2010 Auto

2009-12-02 16:02:58

VS2010編輯器

2011-08-16 14:50:05

CMFCToolBarVS2010

2009-12-11 14:16:11

VS2010 Ulti

2009-12-15 17:42:29

2009-12-15 17:55:54

VS2010 Ulti

2010-03-24 09:06:02

Visual Stui

2009-12-04 10:02:32

VS XML注釋

2009-05-27 09:45:40

2009-12-02 14:05:17

VS2010程序

2009-12-18 10:24:28

VS 2010代碼

2010-12-28 09:39:18

std::tr1 biVS2010

2009-05-20 13:03:40

Visual StudSilverlight微軟

2009-11-04 09:59:20

Visual StudFlashNetBeans
點贊
收藏

51CTO技術棧公眾號

亚洲精品高清视频| 国产精品免费视频xxxx| 中文字幕一区三区久久女搜查官| 欧美调教sm| 国产精品久久夜| 北条麻妃高清一区| 男操女视频网站| 自拍偷拍欧美| 亚洲人成电影网站| 深夜福利网站在线观看| 欧美大片免费高清观看| 亚洲男人的天堂一区二区| 久久精品国产精品青草色艺| 一二三四区在线| 亚洲精品影院在线观看| 久久精品国产一区| 青青草视频成人| 国产一区二区三区国产精品| 色噜噜狠狠色综合欧洲selulu| 视频一区二区视频| 国产资源在线观看| 懂色av一区二区夜夜嗨| 国产精品久久久久久久久久| 久久久美女视频| 99久久国产综合精品成人影院| 日韩成人久久久| 夜夜爽久久精品91| 天堂久久一区| 91久久线看在观草草青青| 欧美又粗又长又爽做受| 日韩在线资源| 亚洲国产精品精华液2区45| 国产一区二区中文字幕免费看| 国产日韩免费视频| 精品一区二区免费视频| 国产成人精品久久二区二区| 黑人一级大毛片| 狠狠88综合久久久久综合网| 久久精品国产视频| 国产又黄又粗又猛又爽的| 国产探花在线精品| 亚洲精品中文字幕有码专区| 国产女人18毛片水真多18| 久久综合偷偷噜噜噜色| 欧美精品一级二级三级| 九九精品久久久| 中韩乱幕日产无线码一区| 91福利小视频| 久久精品.com| 精品91久久| 色综合亚洲欧洲| 中文字幕乱码人妻综合二区三区| 热色播在线视频| 欧美日韩综合视频| 妺妺窝人体色www在线小说| 丁香花电影在线观看完整版| 一区二区欧美精品| 成人小视频在线观看免费| 永久免费网站在线| 亚洲成人免费观看| 日韩国产一级片| 手机在线理论片| 色综合久久久久综合体桃花网| 欧美一级在线看| 欧美momandson| 在线观看日韩电影| 天天视频天天爽| 曰本一区二区| 日韩免费福利电影在线观看| 亚洲黄色小说在线观看| 日韩理论电影中文字幕| 亚洲欧洲日韩国产| 中国特黄一级片| 女生裸体视频一区二区三区| 欧美激情欧美狂野欧美精品| 日韩欧美亚洲一区二区三区| 久久成人免费| 国产精品偷伦视频免费观看国产 | 国产三区四区在线观看| 中文久久乱码一区二区| 97超碰人人爱| 美女av在线免费看| 欧美性大战久久久久久久| 777一区二区| 成人看片爽爽爽| 亚洲日本欧美日韩高观看| 国产三级aaa| 1024日韩| 国产精品亚洲一区二区三区| 国产伦子伦对白视频| 成人激情小说乱人伦| 日本精品一区二区| 99热国产在线| 色综合久久综合网97色综合| 伊人免费视频二| 红杏一区二区三区| 日韩亚洲在线观看| 国产精品第9页| 黑人巨大精品欧美一区| 国产乱码一区| 黄色网页在线免费观看| 天天爽夜夜爽夜夜爽精品视频| 中文字幕网av| 老汉色老汉首页av亚洲| 日韩在线视频播放| 日韩免费视频一区二区视频在线观看| 久久精品国产精品亚洲精品| 久久国产精品-国产精品| 999在线视频| 大桥未久av一区二区三区| 亚洲精品在线视频播放| 亚洲免费专区| 午夜精品美女自拍福到在线| 6—12呦国产精品| 久久亚洲私人国产精品va媚药| 午夜久久久久久久久久久| 国产一区二区主播在线| 亚洲成人久久电影| 三级av在线免费观看| 日韩电影在线一区二区| 国产亚洲精品自在久久| www免费在线观看| 欧美亚洲尤物久久| aaaaa级少妇高潮大片免费看| 欧美国产高潮xxxx1819| 国产精品丝袜视频| 岛国在线大片| 欧美体内谢she精2性欧美| 欧美日韩一区二区区别是什么 | 亚洲视频999| 日韩av在线电影| 国产99精品国产| 中文字幕一区二区三区四区五区| jvid一区二区三区| 亚洲香蕉成人av网站在线观看| 日韩女同强女同hd| 国产91综合一区在线观看| 天天干天天色天天爽| 福利一区二区免费视频| 国产一区二区黑人欧美xxxx| 国产黄色免费观看| 久久新电视剧免费观看| 男人日女人下面视频| 国产精品久久久网站| 欧美高清自拍一区| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 一区二区激情小说| 国产chinesehd精品露脸| 影视亚洲一区二区三区| 亚洲伊人久久综合| aa在线视频| 精品福利一区二区三区| 国产精品美女毛片真酒店| 成人看片黄a免费看在线| 成人免费在线网| 国产色噜噜噜91在线精品| 久久久噜噜噜久久| 日韩一卡二卡在线| 午夜精品福利视频网站| 亚洲欧美色图视频| 狂野欧美一区| 一区二区三区国| 99er精品视频| 欧美精品aaa| 日韩三级电影网| 欧美吞精做爰啪啪高潮| 少妇高潮惨叫久久久久| 国产乱一区二区| 性欧美大战久久久久久久| 久久中文字幕导航| 国产精品女主播| 91精品久久久| 日韩av网站电影| 免费又黄又爽又猛大片午夜| 一区二区中文视频| 亚洲区 欧美区| 欧美亚洲视频| 一区二区三区偷拍| 国产毛片久久久| 国产精品高潮视频| 怡红院在线观看| 亚洲欧洲日产国产网站| 国产特级黄色片| 午夜电影一区二区三区| 波多野结衣一二三四区| 国产精品一二三在| 男人亚洲天堂网| 欧美在线观看天堂一区二区三区| 国产精品二区二区三区| 日韩和的一区二在线| 久热精品在线视频| 欧美在线观看在线观看| 6080yy午夜一二三区久久| 国产精品99re| 中文字幕一区二区三区蜜月| 深田咏美中文字幕| 天堂va蜜桃一区二区三区| 日本xxx免费| 欧美日韩亚洲在线观看| 国产精品日韩一区二区| a∨色狠狠一区二区三区| 91国在线精品国内播放| 一本一道波多野毛片中文在线| 精品久久久久久无| 日韩久久久久久久久久| 亚洲6080在线| 日韩欧美123区| 国产亚洲污的网站| 日本一卡二卡在线| 另类小说欧美激情| 国产肥臀一区二区福利视频| 欧美成人日本| 欧美亚洲视频一区| av中字幕久久| 久久久久成人精品免费播放动漫| 午夜视频在线观看精品中文| 国产日韩在线免费| 亚洲成人短视频| 97视频在线免费观看| 先锋成人av| 久久资源免费视频| 一区二区三区视频在线观看视频| 亚洲老司机av| 天天摸天天碰天天爽天天弄| 日韩午夜在线影院| 国产毛片毛片毛片毛片毛片| 欧美午夜视频网站| 亚洲国产av一区二区三区| 精品国产91久久久久久| 伊人365影院| 一区二区免费看| 加勒比av在线播放| 亚洲靠逼com| 中文字幕电影av| 国产精品久久久久久久久久久免费看 | 精品不卡在线视频| 国产精选久久久| 欧美丰满少妇xxxbbb| 中文字幕在线观看1| 欧美在线一区二区| 夜夜躁日日躁狠狠久久av| 日本乱人伦一区| 蜜臀99久久精品久久久久小说 | av网址在线观看免费| 亚洲免费在线| 毛片一区二区三区四区| 久色成人在线| 热久久精品免费视频| 日产国产高清一区二区三区| 特级丰满少妇一级| 老司机免费视频一区二区| 午夜剧场高清版免费观看| 久久精品av麻豆的观看方式| 孩娇小videos精品| 久久成人av少妇免费| 人妻换人妻仑乱| av一本久道久久综合久久鬼色| 天天插天天射天天干| 久久五月婷婷丁香社区| 性猛交ⅹxxx富婆video | 国产成人aaa| 国产十八熟妇av成人一区| 久久久久久一级片| 中文天堂资源在线| 亚洲欧美一区二区三区极速播放| 欧美成人片在线观看| 亚洲成人精品在线观看| 国产无遮挡呻吟娇喘视频| 欧美在线观看视频一区二区三区| 国产又大又黄的视频| 欧美电影免费提供在线观看| 熟妇人妻av无码一区二区三区| 亚洲精品自拍视频| 99re热久久这里只有精品34| 欧美另类高清videos| 三级中文字幕在线观看| 国产精品吴梦梦| 亚洲一二三区视频| 欧美日韩亚洲综合一区二区三区激情在线| 国产91精品对白在线播放| 影音先锋亚洲视频| 亚洲激情国产| wwwwxxxx日韩| 国产91综合网| 中文字幕欧美激情极品| 亚洲激情欧美激情| 黄色av一级片| 欧美成人三级在线| 国产在线高清| 欧美极品少妇xxxxⅹ喷水| 欧美一区 二区 三区| 成人网中文字幕| 人人香蕉久久| 色一情一乱一乱一区91| 久久精品综合| 国产在线a视频| 国产欧美日韩综合| 久久久久久久99| 91精品在线麻豆| 欧美孕妇性xxxⅹ精品hd| 久久成人综合视频| 大胆人体一区| 国产精品免费观看高清| 色97色成人| www.com毛片| 国产成a人亚洲精| 极品美妇后花庭翘臀娇吟小说| 性做久久久久久久久| 国产一区二区在线播放视频| 亚洲精品视频久久| 欧美xxxxhdvideosex| 国产欧美一区二区三区久久人妖| 欧美激情99| 韩国无码av片在线观看网站| 奇米色一区二区| 欧美图片第一页| 午夜不卡av免费| 亚洲精品国产一区二| www.日韩不卡电影av| 性感美女一区二区在线观看| 激情伦成人综合小说| 亚洲欧美文学| 亚洲黄色片免费看| 国产精品久久久久久久久久免费看 | 免费在线稳定资源站| 韩国精品美女www爽爽爽视频| 欧美欧美在线| japanese在线视频| 麻豆91在线播放| 天天摸日日摸狠狠添| 色婷婷久久久亚洲一区二区三区| 日本xxxxwww| 国内精品伊人久久| 成午夜精品一区二区三区软件| 青青草视频在线视频| 国产一区二区剧情av在线| 一级性生活免费视频| 欧美日韩欧美一区二区| 91最新在线| 国产日韩在线亚洲字幕中文| 日韩av有码| 永久免费的av网站| 国产精品国产三级国产三级人妇 | 免费亚洲电影| 欧美日韩免费精品| 久久久久国产精品午夜一区| 一本色道久久综合亚洲精品图片| 一本一道综合狠狠老| 毛片网站在线观看| 国产成人a亚洲精品| 国产乱码精品一区二区亚洲| 久久综合伊人77777麻豆最新章节| 久久久久久毛片| 亚洲午夜无码久久久久| 这里只有精品在线播放| 国产极品一区| 久久久久亚洲av无码专区喷水| 国产寡妇亲子伦一区二区| 久久在线视频精品| 日韩av一区在线| 神马久久资源| 在线一区高清| 国产成人av资源| 日韩大片免费在线观看| 亚洲欧美日韩国产中文| 成人免费毛片嘿嘿连载视频…| 制服丝袜综合日韩欧美| 国产高清视频一区| www.日本精品| 最近中文字幕日韩精品 | 色女孩综合网| 国产一区二区精品久久| 国产性xxxx高清| 尤物九九久久国产精品的分类| 国产一区二区久久久久| 国产3p露脸普通话对白| 久久精品一区二区| 国产免费av观看| 2019中文在线观看| 欧美3p在线观看| www.四虎在线| 91精品福利在线| 四虎av在线| 欧美三级华人主播| 国产福利91精品| 亚洲日本韩国在线| 色老头一区二区三区| 精品少妇一区| 中文字幕亚洲欧洲| 午夜电影久久久| 黄色在线免费看| 免费av在线一区二区| 国产综合一区二区| 特级毛片www| 欧美成人手机在线| 国产va免费精品观看精品视频| 日本黄色三级网站| 欧洲国产伦久久久久久久| 欧美hdxxx| 中文字幕一区二区三区精彩视频|