2016-11-02 13 views
2

私はthe mongocxx query exemplesを探していましたが、を使用している点は何ですか?auto&はここにありません。 documentationmongocxxカーソルとrvalue参照

auto cursor = db["restaurants"].find({}, opts); 
     for (auto&& doc : cursor) { 
      std::cout << bsoncxx::to_json(doc) << std::endl; 
} 

、彼らはそれをこのように使用します。

mongocxx::cursor cursor = collection.find(document{} << finalize); 
for(auto doc : cursor) { 
    std::cout << bsoncxx::to_json(doc) << "\n"; 
} 

私が一番ここプラクティス、そしてその理由は何for(auto& doc : cursor)

を使いたいですか?このビットで

答えて

2

for (auto&& doc : cursor) 
... 

"範囲式"temporaryを返すことができる "の範囲"。

ここでは、値の参照を使用するための「ベストプラクティス」autoを使用する場合)です。

はこれを見ている: http://en.cppreference.com/w/cpp/language/range-for

引用:

range_expressionが一時的に返す場合右辺値参照__rangeに結合することによって示されるように、その寿命は、ループの終わりまで延長されますrange_expression内の一時的なものの存続期間は延長されないことに注意してください。

そして、この:

http://www.artima.com/cppsource/rvalue.html

引用:

右辺値参照があなたのに対し、それは(右辺値)一時的に結合することができることを除いて、左辺値参照のように振る舞いますrvalueへの(非const)左辺値参照をバインドすることはできません。

関連する問題