मैं C++ 11 संगामिति (भाग 3) पर एक यूट्यूब वीडियो और निम्नलिखित कोड है, जो संकलित करता है तथा वीडियो में सही परिणाम उत्पन्न करता है भर में आया के दृश्य स्टूडियो कार्यान्वयन।"अर्थ विज्ञान के लिए कदम" और "rvalue संदर्भ"
हालांकि, मुझे विजुअल स्टूडियो 2012 का उपयोग करके इस कोड की संकलन त्रुटि मिली है। संकलक toSin(list<double>&&)
के तर्क प्रकार के बारे में शिकायत करता है। यदि मैं तर्क प्रकार को list<double>&
पर बदलता हूं, तो कोड संकलित किया गया है।
मेरा प्रश्न move(list)
से _tmain()
में वापस लौटाया गया है, क्या यह एक रैल्यू संदर्भ है या सिर्फ एक संदर्भ है?
#include "stdafx.h"
#include <iostream>
#include <thread>
#include <chrono>
#include <list>
#include <algorithm>
using namespace std;
void toSin(list<double>&& list)
{
//this_thread::sleep_for(chrono::seconds(1));
for_each(list.begin(), list.end(), [](double & x)
{
x = sin(x);
});
for_each(list.begin(), list.end(), [](double & x)
{
int count = static_cast<int>(10*x+10.5);
for (int i=0; i<count; ++i)
{
cout.put('*');
}
cout << endl;
});
}
int _tmain(int argc, _TCHAR* argv[])
{
list<double> list;
const double pi = 3.1415926;
const double epsilon = 0.00000001;
for (double x = 0.0; x<2*pi+epsilon; x+=pi/16)
{
list.push_back(x);
}
thread th(&toSin, /*std::ref(list)*/std::move(list));
th.join();
return 0;
}
VS2012 बहुत पुराना है, कम से कम VS2013 कोशिश करते हैं और अधिमानतः 2015 –