Benzersiz işaretçi xvalue argümanlarını anladığımdan emin olmak istiyorumBenzersiz işaretçiler xvalue Anlambilim? Neden lambda f2'nin davranışı lambda f1'den farklıdır?
Bu, std :: move ve benzersiz işaretçileri öğrenmek için yazdığım örnek bir koddur. Line2'nin neden çarptığını ancak satır1'in çalıştığını kimse anlatabilir mi? Benim test programımda lambda f2'de hareket ne yapar, neden std :: move sonra line1 çalışır? Bu sadece benim öğrenme için ve std :: hareket r-değeri referans için sadece bir döküm olduğu için değil ödev sorun, ben 1 eserleri C++ 14 ve C++ 11
#include <iostream>
#include <functional>
#include <memory>
void test()
{
std::unique_ptr<int> p (new int(278));
auto f1 = [](std::unique_ptr<int> i){std::cout << *i << std::endl;};
auto f2 = [](std::unique_ptr<int> &&i){std::cout << *i << std::endl;};
f2(std::move(p));
std::cout << *p << std::endl; //line 1
f1(std::move(p));
std::cout << *p << std::endl; //line 2
}
int main(int argc, const char * argv[]) {
test();
return 0;
}
düzenlemeleri de ekledi, derlemedim çünkü üstbilgiyi ekledim –
Tüm kodu Xcode Sürüm 7.2'den yapıştırıyorum. Evet üzgünüm yazım hatası. Çok üzgünüm –
Apple LLVM 7.0, yazım hatalarını düzelttim. Yakalamak için teşekkür ederim –